From 89ee58590c0d2c24f2203adbf0f44861e463abad Mon Sep 17 00:00:00 2001 From: Mohit Panjwani Date: Wed, 2 Dec 2020 17:54:08 +0530 Subject: [PATCH] build version 400 --- .env.example | 8 +- .env.testing | 9 + .eslintrc | 15 +- app/Address.php | 36 - app/CompanySetting.php | 47 - app/Console/Commands/CheckEstimateStatus.php | 2 +- app/Console/Commands/CheckInvoiceStatus.php | 2 +- app/Console/Commands/UpdateCommand.php | 4 +- app/Estimate.php | 237 - app/Events/UpdateFinished.php | 8 +- app/Exceptions/Handler.php | 10 +- app/ExpenseCategory.php | 39 - app/Generators/CustomPathGenerator.php | 50 + app/Http/Controllers/AppVersionController.php | 24 + .../Auth/AccessTokensController.php | 194 - app/Http/Controllers/CompanyController.php | 369 - app/Http/Controllers/CustomersController.php | 238 - app/Http/Controllers/EstimatesController.php | 479 - app/Http/Controllers/ExpensesController.php | 282 - app/Http/Controllers/FrontendController.php | 410 - app/Http/Controllers/InvoicesController.php | 569 - app/Http/Controllers/ItemsController.php | 166 - app/Http/Controllers/LocationController.php | 21 - app/Http/Controllers/OnboardingController.php | 337 - app/Http/Controllers/PaymentController.php | 321 - app/Http/Controllers/ReportController.php | 293 - app/Http/Controllers/SettingsController.php | 42 - app/Http/Controllers/UsersController.php | 86 - .../V1/Auth/ConfirmPasswordController.php | 40 + .../Auth/ForgotPasswordController.php | 13 +- .../V1/Auth/IsRegisteredController.php | 25 + .../Controllers/V1/Auth/LoginController.php | 40 + .../V1/Auth/RegisterController.php | 73 + .../{ => V1}/Auth/ResetPasswordController.php | 19 +- .../V1/Auth/VerificationController.php | 42 + .../Controllers/V1/Backup/ApiController.php | 23 + .../V1/Backup/BackupsController.php | 93 + .../V1/Backup/DownloadBackupController.php | 58 + .../V1/CustomField/CustomFieldsController.php | 102 + .../V1/Customer/CustomerStatsController.php | 146 + .../V1/Customer/CustomersController.php | 122 + .../V1/Dashboard/DashboardChartController.php | 32 + .../Dashboard}/DashboardController.php | 48 +- .../ChangeEstimateStatusController.php | 26 + .../V1/Estimate/ConvertEstimateController.php | 95 + .../V1/Estimate/EstimatePdfController.php | 20 + .../Estimate/EstimateTemplatesController.php | 23 + .../V1/Estimate/EstimatesController.php | 104 + .../V1/Estimate/SendEstimateController.php | 23 + .../V1/Expense/DownloadReceiptController.php | 34 + .../Expense/ExpenseCategoriesController.php} | 69 +- .../V1/Expense/ExpensesController.php | 101 + .../V1/Expense/ShowReceiptController.php | 40 + .../V1/Expense/UploadReceiptController.php | 36 + .../V1/General/BootstrapController.php | 52 + .../V1/General/CountriesController.php | 23 + .../V1/General/CurrenciesController.php | 25 + .../V1/General/DateFormatsController.php | 23 + .../V1/General/FiscalYearsController.php | 22 + .../V1/General/LanguagesController.php | 22 + .../V1/General/NextNumberController.php | 55 + .../V1/General/NotesController.php | 88 + .../V1/General/SearchController.php | 37 + .../V1/General/TimezonesController.php | 23 + .../Invoice/ChangeInvoiceStatusController.php | 34 + .../V1/Invoice/CloneInvoiceController.php | 91 + .../V1/Invoice/InvoicePdfController.php | 20 + .../V1/Invoice/InvoiceTemplatesController.php | 25 + .../V1/Invoice/InvoicesController.php | 128 + .../V1/Invoice/SendInvoiceController.php | 25 + .../Controllers/V1/Item/ItemsController.php | 106 + .../Item/UnitsController.php} | 46 +- .../Controllers/V1/Mobile/AuthController.php | 43 + .../Mobile/Customer/EstimatePdfController.php | 46 + .../Mobile/Customer/InvoicePdfController.php | 47 + .../DatabaseConfigurationController.php | 90 + .../V1/Onboarding/FinishController.php | 25 + .../Onboarding/OnboardingWizardController.php | 47 + .../Onboarding}/PermissionsController.php | 3 +- .../Onboarding}/RequirementsController.php | 3 +- .../Payment/PaymentMethodsController.php} | 51 +- .../V1/Payment/PaymentPdfController.php | 20 + .../V1/Payment/PaymentsController.php | 96 + .../V1/Payment/SendPaymentController.php | 23 + .../Report/CustomerSalesReportController.php | 92 + .../V1/Report/ExpensesReportController.php | 77 + .../V1/Report/ItemSalesReportController.php | 76 + .../V1/Report/ProfitLossReportController.php | 85 + .../V1/Report/TaxSummaryReportController.php | 79 + .../V1/Settings/CompanyController.php | 127 + .../V1/Settings/DiskController.php | 186 + .../Settings/GetCompanySettingsController.php | 23 + .../V1/Settings/GetUserSettingsController.php | 23 + .../Settings/MailConfigurationController.php} | 63 +- .../Settings/TaxTypesController.php} | 69 +- .../UpdateCompanySettingsController.php | 25 + .../Settings/UpdateUserSettingsController.php | 27 + .../V1/Update/CheckVersionController.php | 26 + .../V1/Update/CopyFilesController.php | 30 + .../V1/Update/DownloadUpdateController.php | 30 + .../V1/Update/FinishUpdateController.php | 28 + .../V1/Update/MigrateUpdateController.php | 25 + .../V1/Update/UnzipUpdateController.php | 38 + .../{ => V1/Update}/UpdateController.php | 6 +- .../Controllers/V1/Users/UsersController.php | 113 + app/Http/Kernel.php | 16 +- app/Http/Middleware/AdminMiddleware.php | 3 +- app/Http/Middleware/Authenticate.php | 2 +- app/Http/Middleware/ConfigMiddleware.php | 17 +- .../Middleware/InstallationMiddleware.php | 2 +- .../Middleware/RedirectIfAuthenticated.php | 4 +- app/Http/Middleware/RedirectIfInstalled.php | 3 +- .../Middleware/RedirectIfUnauthorized.php | 26 + app/Http/Middleware/VerifyCsrfToken.php | 2 +- app/Http/Requests/CompanyRequest.php | 8 +- app/Http/Requests/CompanySettingRequest.php | 24 +- app/Http/Requests/CustomFieldRequest.php | 37 + app/Http/Requests/CustomerRequest.php | 49 +- .../Requests/DatabaseEnvironmentRequest.php | 61 +- app/Http/Requests/DeleteCustomersRequest.php | 37 + app/Http/Requests/DeleteEstimatesRequest.php | 37 + app/Http/Requests/DeleteExpensesRequest.php | 37 + app/Http/Requests/DeleteInvoiceRequest.php | 40 + app/Http/Requests/DeleteItemsRequest.php | 42 + app/Http/Requests/DeletePaymentsRequest.php | 37 + app/Http/Requests/DiskEnvironmentRequest.php | 119 + app/Http/Requests/EstimatesRequest.php | 75 +- app/Http/Requests/ExpenseCategoryRequest.php | 7 +- app/Http/Requests/ExpenseRequest.php | 19 +- app/Http/Requests/GetSettingsRequest.php | 36 + app/Http/Requests/InvoicesRequest.php | 75 +- app/Http/Requests/ItemsRequest.php | 14 +- app/Http/Requests/MailEnvironmentRequest.php | 128 +- app/Http/Requests/NotesRequest.php | 32 + app/Http/Requests/PaymentMethodRequest.php | 5 +- app/Http/Requests/PaymentRequest.php | 35 +- app/Http/Requests/ProfileRequest.php | 43 +- app/Http/Requests/SendEstimatesRequest.php | 41 + app/Http/Requests/SendInvoiceRequest.php | 41 + app/Http/Requests/SendPaymentRequest.php | 41 + app/Http/Requests/SettingKeyRequest.php | 4 +- app/Http/Requests/SettingRequest.php | 8 +- app/Http/Requests/TaxTypeRequest.php | 18 +- app/Http/Requests/UnitRequest.php | 5 +- app/Http/Requests/UpdateSettingsRequest.php | 35 + app/Http/Requests/UserRequest.php | 59 + app/Invoice.php | 285 - app/Jobs/CreateBackupJob.php | 61 + app/Jobs/GenerateEstimatePdfJob.php | 40 + app/Jobs/GenerateInvoicePdfJob.php | 40 + app/Jobs/GeneratePaymentPdfJob.php | 40 + app/Listeners/Updates/v1/Version110.php | 4 +- app/Listeners/Updates/v2/Version200.php | 6 +- app/Listeners/Updates/v2/Version201.php | 2 +- app/Listeners/Updates/v2/Version202.php | 2 +- app/Listeners/Updates/v2/Version210.php | 4 +- app/Listeners/Updates/v3/Version300.php | 14 +- app/Listeners/Updates/v3/Version310.php | 4 +- app/Listeners/Updates/v3/Version311.php | 4 +- ...imateViewed.php => EstimateViewedMail.php} | 2 +- ...nvoiceViewed.php => InvoiceViewedMail.php} | 2 +- .../{EstimatePdf.php => SendEstimateMail.php} | 17 +- .../{InvoicePdf.php => SendInvoiceMail.php} | 16 +- .../{PaymentPdf.php => SendPaymentMail.php} | 17 +- app/Models/Address.php | 39 + app/{ => Models}/Company.php | 21 +- app/Models/CompanySetting.php | 63 + app/{ => Models}/Country.php | 6 +- app/{ => Models}/Currency.php | 5 +- app/Models/CustomField.php | 152 + app/Models/CustomFieldValue.php | 59 + app/Models/EmailLog.php | 18 + app/Models/Estimate.php | 496 + app/{ => Models}/EstimateItem.php | 7 +- app/{ => Models}/EstimateTemplate.php | 6 +- app/{ => Models}/Expense.php | 118 +- app/Models/ExpenseCategory.php | 78 + app/Models/FileDisk.php | 187 + app/Models/Invoice.php | 580 + app/{ => Models}/InvoiceItem.php | 17 +- app/{ => Models}/InvoiceTemplate.php | 7 +- app/{ => Models}/Item.php | 90 +- app/Models/Note.php | 36 + app/Models/Payment.php | 431 + app/Models/PaymentMethod.php | 76 + app/{ => Models}/Setting.php | 4 +- app/{ => Models}/Tax.php | 20 +- app/Models/TaxType.php | 81 + app/Models/Unit.php | 56 + app/Models/User.php | 430 + app/Models/UserSetting.php | 19 + app/Payment.php | 179 - app/PaymentMethod.php | 25 - app/Providers/AppServiceProvider.php | 8 +- app/Providers/AuthServiceProvider.php | 3 - app/Providers/DropboxServiceProvider.php | 39 + app/Providers/RouteServiceProvider.php | 75 +- app/Proxy/HttpKernelProxy.php | 423 - app/Rules/Backup/BackupDisk.php | 42 + app/Rules/Backup/FilesystemDisks.php | 42 + app/Rules/Backup/PathToZip.php | 41 + app/Rules/RelationNotExist.php | 52 + app/Rules/UniqueNumber.php | 60 + app/Space/EnvironmentManager.php | 253 +- app/Space/PermissionsChecker.php | 2 +- app/Space/SiteApi.php | 2 +- app/Space/Updater.php | 6 +- app/Space/helpers.php | 84 +- app/TaxType.php | 31 - app/Traits/GeneratesPdfTrait.php | 183 + app/Traits/HasCustomFieldsTrait.php | 48 + app/Unit.php | 26 - app/User.php | 263 - composer.json | 60 +- composer.lock | 5147 +++++--- config/app.php | 6 +- config/auth.php | 28 +- config/backup.php | 241 + config/cache.php | 1 + config/cors.php | 34 + config/crater.php | 37 +- config/filesystems.php | 40 +- config/hashids.php | 60 + .../{medialibrary.php => media-library.php} | 72 +- config/sanctum.php | 47 + config/services.php | 2 +- config/session.php | 20 +- database/factories/AddressFactory.php | 52 +- database/factories/CompanyFactory.php | 34 +- database/factories/CompanySettingFactory.php | 31 + database/factories/CustomFieldFactory.php | 38 + .../factories/CustomFieldValueFactory.php | 34 + database/factories/EmailLogFactory.php | 38 + database/factories/EstimateFactory.php | 129 +- database/factories/EstimateItemFactory.php | 78 +- .../factories/EstimateTemplateFactory.php | 36 +- database/factories/ExpenseCategoryFactory.php | 38 +- database/factories/ExpenseFactory.php | 48 +- database/factories/FileDiskFactory.php | 35 + database/factories/InvoiceFactory.php | 164 +- database/factories/InvoiceItemFactory.php | 78 +- database/factories/InvoiceTemplateFactory.php | 36 +- database/factories/ItemFactory.php | 47 +- database/factories/ModelFactory.php | 40 - database/factories/NoteFactory.php | 30 + database/factories/PaymentFactory.php | 48 +- database/factories/PaymentMethodFactory.php | 36 +- database/factories/TaxFactory.php | 54 +- database/factories/TaxTypeFactory.php | 44 +- database/factories/UnitFactory.php | 30 + database/factories/UserFactory.php | 40 + ...12_100000_create_password_resets_table.php | 7 +- ..._12_02_204902_create_permission_tables.php | 90 - ...01_create_personal_access_tokens_table.php | 36 + ...2_01_063235_create_custom_fields_table.php | 48 + ...63509_create_custom_field_values_table.php | 44 + ...0_09_07_103054_create_file_disks_table.php | 36 + ...9_22_153617_add_columns_to_media_table.php | 34 + ...9_26_100951_create_user_settings_table.php | 35 + ..._102913_add_company_to_addresses_table.php | 34 + .../2020_10_17_074745_create_notes_table.php | 34 + ...lumn_to_text_on_company_settings_table.php | 32 + ...3_050206_add_creator_in_invoices_table.php | 33 + ..._050252_add_creator_in_estimates_table.php | 33 + ...3_050316_add_creator_in_payments_table.php | 33 + ...3_050333_add_creator_in_expenses_table.php | 33 + ...1_23_050406_add_creator_in_items_table.php | 33 + ...1_23_065815_add_creator_in_users_table.php | 33 + ...0_11_23_074154_create_email_logs_table.php | 37 + ...12_02_064933_update_crater_version_320.php | 2 +- ...12_02_090527_update_crater_version_400.php | 138 + .../CountriesTableSeeder.php | 3 + .../CurrenciesTableSeeder.php | 4 +- .../{seeds => seeders}/DatabaseSeeder.php | 7 +- database/seeders/DefaultSettingsSeeder.php | 44 + database/seeders/DemoSeeder.php | 29 + .../EstimateTemplateSeeder.php | 4 +- .../InvoiceTemplateSeeder.php | 4 +- .../PaymentMethodSeeder.php | 4 +- database/{seeds => seeders}/UnitSeeder.php | 4 +- database/seeders/UsersTableSeeder.php | 37 + database/seeds/RoleSeeder.php | 19 - database/seeds/SettingsSeeder.php | 44 - database/seeds/UsersTableSeeder.php | 26 - docker-compose/setup.sh | 1 - package-lock.json | 10269 +++++++--------- package.json | 34 +- phpunit.xml | 34 +- public/assets/css/crater.css | 7 +- public/assets/css/crater.css.map | 2 +- public/assets/js/app.js | 3 +- public/assets/js/app.js.LICENSE.txt | 183 + public/assets/js/app.js.map | 2 +- public/assets/js/{ => pace}/pace.js | 0 public/index.php | 4 + public/mix-manifest.json | 4 +- resources/assets/js/app.js | 22 +- resources/assets/js/bootstrap.js | 104 +- .../assets/js/components/GlobalSearch.vue | 157 + .../assets/js/components/base/BaseButton.vue | 195 - .../js/components/base/BaseCustomInput.vue | 302 + .../js/components/base/BaseCustomerSelect.vue | 33 +- .../js/components/base/BaseDatePicker.vue | 142 + .../assets/js/components/base/BaseInput.vue | 158 - .../assets/js/components/base/BaseLoader.vue | 121 +- .../assets/js/components/base/BasePage.vue | 7 + .../js/components/base/BasePrefixInput.vue | 71 - .../assets/js/components/base/BaseSwitch.vue | 66 - .../js/components/base/BaseTextArea.vue | 79 - .../js/components/base/BaseTimePicker.vue | 81 + .../base/base-date-picker/BaseDatePicker.vue | 649 - .../base/base-date-picker/DateInput.vue | 158 - .../base/base-date-picker/PickerDay.vue | 375 - .../base/base-date-picker/PickerMonth.vue | 200 - .../base/base-date-picker/PickerYear.vue | 174 - .../base/base-date-picker/src/DateUtils.js | 252 - .../base-date-picker/src/locale/Language.js | 57 - .../base/base-date-picker/src/locale/index.js | 105 - .../src/locale/translations/af.js | 10 - .../src/locale/translations/ar.js | 14 - .../src/locale/translations/bg.js | 10 - .../src/locale/translations/bs.js | 10 - .../src/locale/translations/ca.js | 10 - .../src/locale/translations/cs.js | 10 - .../src/locale/translations/da.js | 10 - .../src/locale/translations/de.js | 10 - .../src/locale/translations/ee.js | 10 - .../src/locale/translations/el.js | 10 - .../src/locale/translations/en.js | 10 - .../src/locale/translations/es.js | 10 - .../src/locale/translations/fa.js | 10 - .../src/locale/translations/fi.js | 10 - .../src/locale/translations/fo.js | 10 - .../src/locale/translations/fr.js | 10 - .../src/locale/translations/ge.js | 10 - .../src/locale/translations/gl.js | 10 - .../src/locale/translations/he.js | 14 - .../src/locale/translations/hr.js | 10 - .../src/locale/translations/hu.js | 10 - .../src/locale/translations/id.js | 10 - .../src/locale/translations/is.js | 10 - .../src/locale/translations/it.js | 10 - .../src/locale/translations/ja.js | 15 - .../src/locale/translations/kk.js | 10 - .../src/locale/translations/ko.js | 14 - .../src/locale/translations/lb.js | 10 - .../src/locale/translations/lt.js | 14 - .../src/locale/translations/lv.js | 10 - .../src/locale/translations/mk.js | 10 - .../src/locale/translations/mn.js | 14 - .../src/locale/translations/nb-NO.js | 10 - .../src/locale/translations/nl.js | 10 - .../src/locale/translations/pl.js | 10 - .../src/locale/translations/pt-BR.js | 10 - .../src/locale/translations/ro.js | 10 - .../src/locale/translations/ru.js | 10 - .../src/locale/translations/sk.js | 10 - .../src/locale/translations/sl-SI.js | 10 - .../src/locale/translations/sr-CYRL.js | 10 - .../src/locale/translations/sr.js | 10 - .../src/locale/translations/sv.js | 10 - .../src/locale/translations/th.js | 10 - .../src/locale/translations/tr.js | 10 - .../src/locale/translations/uk.js | 10 - .../src/locale/translations/ur.js | 14 - .../src/locale/translations/vi.js | 10 - .../src/locale/translations/zh-HK.js | 11 - .../src/locale/translations/zh.js | 13 - .../base/base-select/BaseSelect.vue | 641 +- .../base/base-select/multiselectMixin.js | 321 +- .../base/base-select/pointerMixin.js | 112 +- .../base/base-table/classes/Column.js | 64 - .../components/base/base-table/classes/Row.js | 61 - .../base/base-table/components/Pagination.vue | 120 - .../base/base-table/components/TableCell.js | 24 - .../base-table/components/TableColumn.vue | 32 - .../components/TableColumnHeader.vue | 72 - .../base-table/components/TableComponent.vue | 330 - .../base/base-table/components/TableRow.vue | 38 - .../base/base-table/expiring-storage.js | 34 - .../js/components/base/base-table/helpers.js | 30 - .../js/components/base/base-table/index.js | 20 - .../js/components/base/base-table/settings.js | 18 - resources/assets/js/components/base/index.js | 47 +- .../js/components/base/modal/BackupModal.vue | 179 + .../js/components/base/modal/BaseModal.vue | 82 +- .../components/base/modal/CategoryModal.vue | 193 +- .../base/modal/CustomField/Index.vue | 500 + .../modal/CustomField/types/DateTimeType.vue | 35 + .../base/modal/CustomField/types/DateType.vue | 29 + .../modal/CustomField/types/DropdownType.vue | 37 + .../modal/CustomField/types/InputType.vue | 27 + .../modal/CustomField/types/NumberType.vue | 27 + .../modal/CustomField/types/OptionsCreate.vue | 41 + .../modal/CustomField/types/PhoneType.vue | 27 + .../modal/CustomField/types/SwitchType.vue | 27 + .../modal/CustomField/types/TextAreaType.vue | 28 + .../base/modal/CustomField/types/TimeType.vue | 28 + .../base/modal/CustomField/types/UrlType.vue | 27 + .../components/base/modal/CustomerModal.vue | 917 +- .../base/modal/EstimateTemplate.vue | 72 +- .../components/base/modal/FileDiskModal.vue | 151 + .../components/base/modal/InvoiceTemplate.vue | 74 +- .../js/components/base/modal/ItemModal.vue | 385 +- .../components/base/modal/ItemUnitModal.vue | 178 +- .../components/base/modal/MailTestModal.vue | 214 +- .../js/components/base/modal/NoteModal.vue | 299 + .../base/modal/PaymentModeModal.vue | 150 +- .../base/modal/SendEstimateModal.vue | 271 + .../base/modal/SendInvoiceModal.vue | 266 + .../base/modal/SendPaymentModal.vue | 263 + .../base/modal/SetDefaultDiskModal.vue | 124 + .../js/components/base/modal/TaxTypeModal.vue | 263 +- .../base/modal/disks/DoSpacesDisk.vue | 345 + .../base/modal/disks/DropboxDisk.vue | 311 + .../components/base/modal/disks/LocalDisk.vue | 177 + .../js/components/base/modal/disks/S3Disk.vue | 313 + .../js/components/base/popup/BasePopup.vue | 100 - .../base/popup/CustomerSelectPopup.vue | 135 +- .../components/base/popup/NoteSelectPopup.vue | 114 + .../components/base/popup/TaxSelectPopup.vue | 93 +- .../js/components/base/theme/BaseSelect.js | 31 + .../js/components/base/theme/DatePicker.js | 11 + .../assets/js/components/base/theme/index.js | 15 + .../js/components/chartjs/LineChart.vue | 3 +- .../js/components/collapse/VCollapse.vue | 16 - .../js/components/collapse/VCollapseItem.vue | 120 - .../js/components/custom-fields/DateField.vue | 104 + .../custom-fields/DateTimeField.vue | 85 + .../custom-fields/DropdownField.vue | 89 + .../components/custom-fields/InputField.vue | 111 + .../components/custom-fields/NumberField.vue | 114 + .../components/custom-fields/PhoneField.vue | 113 + .../components/custom-fields/SwitchField.vue | 37 + .../custom-fields/TextAreaField.vue | 96 + .../js/components/custom-fields/TimeField.vue | 103 + .../js/components/custom-fields/UrlField.vue | 101 + .../js/components/dropdown/VDropdown.vue | 139 - .../components/dropdown/VDropdownDivider.vue | 3 - .../js/components/dropdown/VDropdownItem.vue | 5 - .../js/components/icon/AstronautIcon.vue | 122 +- .../assets/js/components/icon/CapsuleIcon.vue | 80 +- .../assets/js/components/icon/ContactIcon.vue | 15 +- .../assets/js/components/icon/DollarIcon.vue | 15 +- .../assets/js/components/icon/DotIcon.vue | 91 +- .../assets/js/components/icon/DragIcon.vue | 19 + .../js/components/icon/EstimateIcon.vue | 15 +- .../assets/js/components/icon/InvoiceIcon.vue | 15 +- .../assets/js/components/icon/LoadingIcon.vue | 17 + .../js/components/icon/MoonwalkerIcon.vue | 136 +- .../js/components/icon/ObservatoryIcon.vue | 150 +- .../js/components/icon/SatelliteIcon.vue | 108 +- .../assets/js/components/icon/SaveIcon.vue | 19 + .../assets/js/components/icon/UfoIcon.vue | 50 +- .../assets/js/components/icon/facebook.vue | 18 +- .../assets/js/components/icon/google.vue | 37 +- resources/assets/js/components/icon/icon.vue | 122 +- .../assets/js/components/icon/twitter.vue | 18 +- .../assets/js/components/icon/upload.vue | 13 +- .../js/components/settings/MailSettings.vue | 24 +- .../assets/js/components/theme/SwBadge.js | 17 + .../assets/js/components/theme/SwButton.js | 16 + .../assets/js/components/theme/SwCard.js | 18 + .../assets/js/components/theme/SwDropdown.js | 25 + .../js/components/theme/SwFilterWrapper.js | 7 + .../assets/js/components/theme/SwInput.js | 31 + .../assets/js/components/theme/SwList.js | 33 + .../assets/js/components/theme/SwModal.js | 20 + .../assets/js/components/theme/SwPopup.js | 8 + .../assets/js/components/theme/SwRadio.js | 34 + .../assets/js/components/theme/SwSwitch.js | 8 + .../assets/js/components/theme/SwTable.js | 8 + .../assets/js/components/theme/SwTextarea.js | 6 + .../assets/js/components/theme/SwWizard.js | 25 + resources/assets/js/components/theme/index.js | 29 + resources/assets/js/helpers/directives.js | 10 +- resources/assets/js/helpers/layout.js | 16 - resources/assets/js/helpers/plugin.js | 40 - resources/assets/js/helpers/utilities.js | 125 +- resources/assets/js/mixins/customFields.js | 133 + resources/assets/js/plugins/ar.json | 290 +- resources/assets/js/plugins/de.json | 278 +- resources/assets/js/plugins/en.json | 277 +- resources/assets/js/plugins/es.json | 305 +- resources/assets/js/plugins/fr.json | 387 +- resources/assets/js/plugins/hi.json | 1171 ++ resources/assets/js/plugins/it.json | 292 +- resources/assets/js/plugins/nl.json | 2062 ++-- resources/assets/js/plugins/pt-br.json | 53 +- resources/assets/js/plugins/pt.json | 1171 ++ resources/assets/js/router.js | 238 +- resources/assets/js/services/ls.js | 8 +- resources/assets/js/store/actions.js | 161 +- resources/assets/js/store/getters.js | 14 + resources/assets/js/store/index.js | 52 +- .../assets/js/store/modules/auth/actions.js | 99 +- .../assets/js/store/modules/auth/getters.js | 3 +- .../assets/js/store/modules/auth/index.js | 7 +- .../js/store/modules/auth/mutation-types.js | 1 + .../assets/js/store/modules/auth/mutations.js | 12 +- .../assets/js/store/modules/backup/actions.js | 41 + .../assets/js/store/modules/backup/getters.js | 3 + .../assets/js/store/modules/backup/index.js | 21 + .../js/store/modules/backup/mutation-types.js | 4 + .../js/store/modules/backup/mutations.js | 21 + .../js/store/modules/category/actions.js | 79 +- .../assets/js/store/modules/category/index.js | 4 +- .../js/store/modules/category/mutations.js | 20 +- .../js/store/modules/company/actions.js | 118 + .../js/store/modules/company/getters.js | 33 +- .../assets/js/store/modules/company/index.js | 19 +- .../store/modules/company/mutation-types.js | 13 + .../js/store/modules/company/mutations.js | 32 +- .../js/store/modules/currency/actions.js | 70 - .../js/store/modules/currency/getters.js | 21 - .../store/modules/currency/mutation-types.js | 5 - .../js/store/modules/currency/mutations.js | 16 - .../js/store/modules/custom-field/actions.js | 91 + .../js/store/modules/custom-field/getters.js | 1 + .../{currency => custom-field}/index.js | 6 +- .../modules/custom-field/mutation-types.js | 5 + .../store/modules/custom-field/mutations.js | 42 + .../js/store/modules/customer/actions.js | 118 +- .../js/store/modules/customer/getters.js | 5 + .../assets/js/store/modules/customer/index.js | 5 +- .../store/modules/customer/mutation-types.js | 1 + .../js/store/modules/customer/mutations.js | 31 +- .../js/store/modules/dashboard/actions.js | 20 +- .../js/store/modules/dashboard/getters.js | 2 +- .../js/store/modules/dashboard/index.js | 10 +- .../store/modules/dashboard/mutation-types.js | 4 +- .../js/store/modules/dashboard/mutations.js | 30 +- .../assets/js/store/modules/disk/actions.js | 84 + .../assets/js/store/modules/disk/getters.js | 2 + .../{reports/invoice => disk}/index.js | 5 +- .../js/store/modules/disk/mutation-types.js | 4 + .../assets/js/store/modules/disk/mutations.js | 20 + .../modules/estimate-template/actions.js | 15 + .../modules/estimate-template/getters.js | 1 + .../expense => estimate-template}/index.js | 4 +- .../estimate-template/mutation-types.js | 1 + .../modules/estimate-template/mutations.js | 7 + .../js/store/modules/estimate/actions.js | 293 +- .../js/store/modules/estimate/getters.js | 3 +- .../assets/js/store/modules/estimate/index.js | 6 +- .../store/modules/estimate/mutation-types.js | 4 + .../js/store/modules/estimate/mutations.js | 52 +- .../js/store/modules/expense/actions.js | 128 +- .../store/modules/invoice-template/actions.js | 15 + .../store/modules/invoice-template/getters.js | 1 + .../profit-loss => invoice-template}/index.js | 4 +- .../invoice-template/mutation-types.js | 1 + .../modules/invoice-template/mutations.js | 7 + .../js/store/modules/invoice/actions.js | 272 +- .../js/store/modules/invoice/getters.js | 4 +- .../assets/js/store/modules/invoice/index.js | 6 +- .../store/modules/invoice/mutation-types.js | 10 +- .../js/store/modules/invoice/mutations.js | 54 +- .../assets/js/store/modules/item/actions.js | 171 +- .../assets/js/store/modules/item/mutations.js | 43 +- .../assets/js/store/modules/modal/actions.js | 8 + .../assets/js/store/modules/modal/getters.js | 14 +- .../assets/js/store/modules/modal/index.js | 6 +- .../js/store/modules/modal/mutation-types.js | 2 + .../js/store/modules/modal/mutations.js | 28 +- .../assets/js/store/modules/notes/actions.js | 70 + .../assets/js/store/modules/notes/getters.js | 1 + .../modules/{reports/tax => notes}/index.js | 4 +- .../js/store/modules/notes/mutation-types.js | 4 + .../js/store/modules/notes/mutations.js | 22 + .../js/store/modules/payment/actions.js | 234 +- .../js/store/modules/payment/getters.js | 1 + .../assets/js/store/modules/payment/index.js | 5 +- .../store/modules/payment/mutation-types.js | 3 + .../js/store/modules/payment/mutations.js | 47 +- .../store/modules/reports/estimate/actions.js | 12 - .../store/modules/reports/estimate/getters.js | 1 - .../reports/estimate/mutation-types.js | 1 - .../modules/reports/estimate/mutations.js | 7 - .../store/modules/reports/expense/actions.js | 11 - .../store/modules/reports/expense/getters.js | 0 .../modules/reports/expense/mutation-types.js | 0 .../modules/reports/expense/mutations.js | 5 - .../store/modules/reports/invoice/actions.js | 12 - .../store/modules/reports/invoice/getters.js | 1 - .../modules/reports/invoice/mutation-types.js | 1 - .../modules/reports/invoice/mutations.js | 7 - .../modules/reports/profit-loss/actions.js | 11 - .../modules/reports/profit-loss/getters.js | 0 .../reports/profit-loss/mutation-types.js | 1 - .../modules/reports/profit-loss/mutations.js | 5 - .../js/store/modules/reports/sales/actions.js | 21 - .../js/store/modules/reports/sales/getters.js | 0 .../js/store/modules/reports/sales/index.js | 19 - .../modules/reports/sales/mutation-types.js | 1 - .../store/modules/reports/sales/mutations.js | 5 - .../js/store/modules/reports/tax/actions.js | 11 - .../js/store/modules/reports/tax/getters.js | 0 .../modules/reports/tax/mutation-types.js | 0 .../js/store/modules/reports/tax/mutations.js | 5 - .../assets/js/store/modules/search/actions.js | 16 + .../assets/js/store/modules/search/getters.js | 4 + .../{reports/estimate => search}/index.js | 5 +- .../js/store/modules/search/mutation-types.js | 2 + .../js/store/modules/search/mutations.js | 11 + .../modules/settings/company-info/actions.js | 22 - .../modules/settings/company-info/getters.js | 1 - .../modules/settings/company-info/index.js | 19 - .../settings/company-info/mutation-types.js | 2 - .../settings/company-info/mutations.js | 11 - .../store/modules/settings/general/actions.js | 27 - .../store/modules/settings/general/getters.js | 2 - .../store/modules/settings/general/index.js | 23 - .../settings/general/mutation-types.js | 2 - .../modules/settings/general/mutations.js | 14 - .../modules/settings/preferences/actions.js | 23 - .../modules/settings/preferences/getters.js | 1 - .../modules/settings/preferences/index.js | 19 - .../settings/preferences/mutation-types.js | 2 - .../modules/settings/preferences/mutations.js | 10 - .../modules/settings/user-profile/actions.js | 45 - .../modules/settings/user-profile/getters.js | 1 - .../modules/settings/user-profile/index.js | 19 - .../settings/user-profile/mutation-types.js | 3 - .../settings/user-profile/mutations.js | 15 - .../js/store/modules/tax-type/actions.js | 90 +- .../assets/js/store/modules/tax-type/index.js | 4 +- .../store/modules/tax-type/mutation-types.js | 2 +- .../js/store/modules/tax-type/mutations.js | 18 +- .../assets/js/store/modules/user/actions.js | 76 +- .../assets/js/store/modules/user/index.js | 5 +- .../js/store/modules/user/mutation-types.js | 6 + .../assets/js/store/modules/user/mutations.js | 20 +- .../assets/js/store/modules/users/actions.js | 119 + .../assets/js/store/modules/users/getters.js | 4 + .../assets/js/store/modules/users/index.js | 22 + .../js/store/modules/users/mutation-types.js | 8 + .../js/store/modules/users/mutations.js | 43 + resources/assets/js/store/mutation-types.js | 14 + resources/assets/js/store/mutations.js | 30 +- resources/assets/js/stub/address.js | 2 +- resources/assets/js/stub/estimate.js | 2 +- resources/assets/js/stub/invoice.js | 2 +- resources/assets/js/stub/tax.js | 2 +- .../assets/js/views/auth/ForgotPassword.vue | 70 +- resources/assets/js/views/auth/Login.vue | 172 +- resources/assets/js/views/auth/Register.vue | 26 +- .../assets/js/views/auth/ResetPassword.vue | 83 +- .../assets/js/views/components/ImageBox.vue | 120 - .../assets/js/views/components/ImageRadio.vue | 71 - .../js/views/components/SettingListBox.vue | 129 - .../assets/js/views/customers/Create.vue | 1056 +- resources/assets/js/views/customers/Index.vue | 494 +- resources/assets/js/views/customers/View.vue | 140 + .../customers/partials/CustomerChart.vue | 219 + .../views/customers/partials/CustomerInfo.vue | 273 + .../partials/CustomerViewSidebar.vue | 273 + .../assets/js/views/dashboard/Dashboard.vue | 643 +- .../js/views/dashboard/DashboardChart.vue | 152 + .../js/views/dashboard/DashboardStats.vue | 128 + .../js/views/dashboard/DashboardTable.vue | 619 + resources/assets/js/views/errors/404.vue | 43 +- .../assets/js/views/estimates/Create.vue | 1085 +- .../js/views/estimates/CustomerSelect.vue | 211 + .../assets/js/views/estimates/EstimateTax.vue | 59 +- resources/assets/js/views/estimates/Index.vue | 905 +- resources/assets/js/views/estimates/Item.vue | 284 +- .../assets/js/views/estimates/ItemSelect.vue | 117 +- resources/assets/js/views/estimates/Tax.vue | 112 +- resources/assets/js/views/estimates/View.vue | 547 +- resources/assets/js/views/expenses/Create.vue | 666 +- resources/assets/js/views/expenses/Index.vue | 595 +- resources/assets/js/views/invoices/Create.vue | 1115 +- .../js/views/invoices/CustomerSelect.vue | 213 + resources/assets/js/views/invoices/Index.vue | 905 +- .../assets/js/views/invoices/InvoiceTax.vue | 59 +- resources/assets/js/views/invoices/Item.vue | 286 +- .../assets/js/views/invoices/ItemSelect.vue | 115 +- resources/assets/js/views/invoices/Tax.vue | 117 +- resources/assets/js/views/invoices/View.vue | 545 +- resources/assets/js/views/items/Create.vue | 475 +- resources/assets/js/views/items/Index.vue | 494 +- .../assets/js/views/layouts/LayoutBasic.vue | 74 +- .../assets/js/views/layouts/LayoutLogin.vue | 116 +- .../assets/js/views/layouts/LayoutWizard.vue | 18 +- .../views/layouts/partials/TheSiteFooter.vue | 30 +- .../views/layouts/partials/TheSiteHeader.vue | 232 +- .../views/layouts/partials/TheSiteSidebar.vue | 192 +- resources/assets/js/views/payments/Create.vue | 646 +- resources/assets/js/views/payments/Index.vue | 564 +- resources/assets/js/views/payments/View.vue | 479 +- .../js/views/reports/ExpensesReport.vue | 184 +- .../js/views/reports/ProfitLossReport.vue | 188 +- .../assets/js/views/reports/SalesReports.vue | 220 +- .../assets/js/views/reports/TaxReport.vue | 165 +- .../assets/js/views/reports/layout/Index.vue | 129 +- .../js/views/settings/BackupSetting.vue | 233 + .../assets/js/views/settings/CompanyInfo.vue | 278 - .../js/views/settings/CompanyInfoSetting.vue | 336 + .../js/views/settings/CustomFieldsSetting.vue | 183 + .../js/views/settings/Customization.vue | 599 - .../views/settings/CustomizationSetting.vue | 87 + .../js/views/settings/ExpenseCategory.vue | 141 - .../views/settings/ExpenseCategorySetting.vue | 179 + .../js/views/settings/FileDiskSetting.vue | 297 + .../js/views/settings/GeneralSetting.vue | 102 - .../assets/js/views/settings/MailConfig.vue | 107 - .../js/views/settings/MailConfigSetting.vue | 125 + .../assets/js/views/settings/NotesSetting.vue | 160 + .../js/views/settings/Notifications.vue | 153 - .../views/settings/NotificationsSetting.vue | 228 + .../js/views/settings/PaymentsModeSetting.vue | 148 + .../assets/js/views/settings/Preferences.vue | 251 - .../js/views/settings/PreferencesSetting.vue | 365 + .../js/views/settings/SettingsIndex.vue | 213 + .../assets/js/views/settings/TaxTypes.vue | 195 - .../js/views/settings/TaxTypesSetting.vue | 243 + .../{UpdateApp.vue => UpdateAppSetting.vue} | 285 +- .../assets/js/views/settings/UserProfile.vue | 224 - .../js/views/settings/UserProfileSetting.vue | 372 + .../customization-tabs/AddressTab.vue | 148 + .../customization-tabs/EstimatesTab.vue | 272 + .../customization-tabs/InvoicesTab.vue | 268 + .../settings/customization-tabs/ItemsTab.vue | 132 + .../customization-tabs/PaymentsTab.vue | 251 + .../assets/js/views/settings/layout/Index.vue | 111 - .../settings/mail-driver/BasicMailDriver.vue | 165 + .../mail-driver/MailgunMailDriver.vue | 278 + .../settings/mail-driver/SesMailDriver.vue | 334 + .../settings/mail-driver/SmtpMailDriver.vue | 335 + .../js/views/settings/mailDriver/Basic.vue | 163 - .../js/views/settings/mailDriver/Mailgun.vue | 212 - .../js/views/settings/mailDriver/Ses.vue | 257 - .../js/views/settings/mailDriver/Smtp.vue | 257 - resources/assets/js/views/users/Create.vue | 281 + resources/assets/js/views/users/Index.vue | 439 + .../assets/js/views/wizard/CompanyInfo.vue | 266 - resources/assets/js/views/wizard/Database.vue | 219 - .../js/views/wizard/EmailConfiguration.vue | 78 - resources/assets/js/views/wizard/Index.vue | 113 - .../assets/js/views/wizard/Permission.vue | 86 - resources/assets/js/views/wizard/Settings.vue | 219 - .../js/views/wizard/SystemRequirement.vue | 112 - .../assets/js/views/wizard/UserProfile.vue | 204 - resources/assets/js/views/wizard/Wizard.vue | 89 + .../js/views/wizard/WizardCompanyInfoStep.vue | 324 + .../js/views/wizard/WizardDatabaseStep.vue | 103 + .../js/views/wizard/WizardEmailConfigStep.vue | 87 + .../js/views/wizard/WizardPermissionStep.vue | 103 + .../js/views/wizard/WizardSettingsStep.vue | 297 + .../wizard/WizardSystemRequirementStep.vue | 129 + .../js/views/wizard/WizardUserProfileStep.vue | 265 + .../views/wizard/database/MysqlDatabase.vue | 306 + .../views/wizard/database/PgsqlDatabase.vue | 306 + .../views/wizard/database/SqliteDatabase.vue | 208 + .../views/wizard/database/SqlsrvDatabase.vue | 306 + .../wizard/mail-driver/BasicMailDriver.vue | 160 + .../wizard/mail-driver/MailgunMailDriver.vue | 260 + .../wizard/mail-driver/SesMailDriver.vue | 323 + .../wizard/mail-driver/SmtpMailDriver.vue | 333 + .../js/views/wizard/mailDriver/Basic.vue | 160 - .../js/views/wizard/mailDriver/Mailgun.vue | 209 - .../assets/js/views/wizard/mailDriver/Ses.vue | 254 - .../js/views/wizard/mailDriver/Smtp.vue | 254 - resources/assets/plugins/alertify/alertify.js | 1 - .../assets/plugins/alertify/alertify.scss | 199 - .../assets/plugins/vue-font-awesome/index.js | 127 - resources/assets/sass/base.scss | 128 - .../assets/sass/components/animation.scss | 29 + .../sass/components/avatar-cropper.scss | 87 - .../assets/sass/components/base-modal.scss | 83 - .../assets/sass/components/base-tabs.scss | 77 - .../sass/components/base/base-button.scss | 55 - .../components/base/base-date-picker.scss | 45 - .../sass/components/base/base-input.scss | 105 - .../sass/components/base/base-loader.scss | 38 - .../base-loader/animation/_functions.scss | 3 - .../base/base-loader/animation/_mixins.scss | 25 - .../base-loader/animation/_variables.scss | 6 - .../components/base/base-loader/index.scss | 58 - .../sass/components/base/base-popup.scss | 27 - .../components/base/base-prefix-input.scss | 54 - .../sass/components/base/base-switch.scss | 46 - .../sass/components/base/base-text-area.scss | 45 - resources/assets/sass/components/buttons.scss | 163 - resources/assets/sass/components/cards.scss | 111 - .../sass/components/category-modal.scss | 37 - resources/assets/sass/components/charts.scss | 77 - .../sass/components/customer-modal.scss | 58 - .../sass/components/customer-select.scss | 100 - resources/assets/sass/components/forms.scss | 6 - .../assets/sass/components/hamburgers.scss | 68 - .../assets/sass/components/item-modal.scss | 52 - .../assets/sass/components/item-select.scss | 65 - .../sass/components/item-unit-modal.scss | 44 - .../sass/components/mail-test-modal.scss | 44 - .../assets/sass/components/pace-loader.scss | 56 +- .../sass/components/payment-modes-modal.scss | 44 - resources/assets/sass/components/tables.scss | 391 - resources/assets/sass/components/tabs.scss | 194 - .../assets/sass/components/tax-select.scss | 70 - .../sass/components/tax-type-modal.scss | 44 - .../sass/components/template-modal.scss | 57 - .../assets/sass/components/tooltips.scss | 133 - .../assets/sass/components/transitions.scss | 7 - .../assets/sass/components/vue-color.scss | 47 - .../sass/components/vue-date-picker.scss | 19 - .../assets/sass/components/vue-dropdown.scss | 183 - .../sass/components/vue-multi-select.scss | 504 - .../assets/sass/components/vue-tabs.scss | 339 - resources/assets/sass/crater.scss | 120 +- .../assets/sass/layouts/crater-sidebar.scss | 63 - .../sass/layouts/layout-icon-sidebar.scss | 33 - resources/assets/sass/layouts/layout.scss | 146 - resources/assets/sass/pages/404.scss | 40 - resources/assets/sass/pages/customers.scss | 120 - .../assets/sass/pages/customization.scss | 39 - resources/assets/sass/pages/dashboard.scss | 387 - .../assets/sass/pages/estimates/create.scss | 614 - .../assets/sass/pages/estimates/index.scss | 98 - .../assets/sass/pages/estimates/view.scss | 272 - resources/assets/sass/pages/expenses.scss | 72 - .../assets/sass/pages/invoices/create.scss | 620 - .../assets/sass/pages/invoices/index.scss | 93 - .../assets/sass/pages/invoices/view.scss | 244 - resources/assets/sass/pages/items.scss | 63 - resources/assets/sass/pages/login-3.scss | 192 - resources/assets/sass/pages/login.scss | 166 - resources/assets/sass/pages/payment-view.scss | 243 - resources/assets/sass/pages/payments.scss | 80 - resources/assets/sass/pages/reports.scss | 102 - resources/assets/sass/pages/settings.scss | 311 - resources/assets/sass/pages/statuses.scss | 116 - resources/assets/sass/pages/wizard.scss | 166 - resources/assets/sass/partials/header.scss | 112 - resources/assets/sass/partials/sidebar.scss | 66 - resources/assets/sass/skins/skin-crater.scss | 606 - resources/assets/sass/variables.scss | 181 - .../lang/vendor/backup/ar/notifications.php | 35 + .../lang/vendor/backup/cs/notifications.php | 35 + .../lang/vendor/backup/da/notifications.php | 35 + .../lang/vendor/backup/de/notifications.php | 35 + .../lang/vendor/backup/en/notifications.php | 35 + .../lang/vendor/backup/es/notifications.php | 35 + .../lang/vendor/backup/fa/notifications.php | 35 + .../lang/vendor/backup/fi/notifications.php | 35 + .../lang/vendor/backup/fr/notifications.php | 35 + .../lang/vendor/backup/hi/notifications.php | 35 + .../lang/vendor/backup/id/notifications.php | 35 + .../lang/vendor/backup/it/notifications.php | 35 + .../lang/vendor/backup/nl/notifications.php | 35 + .../lang/vendor/backup/pl/notifications.php | 35 + .../vendor/backup/pt-BR/notifications.php | 35 + .../lang/vendor/backup/ro/notifications.php | 35 + .../lang/vendor/backup/ru/notifications.php | 35 + .../lang/vendor/backup/tr/notifications.php | 35 + .../lang/vendor/backup/uk/notifications.php | 35 + .../vendor/backup/zh-CN/notifications.php | 35 + .../vendor/backup/zh-TW/notifications.php | 35 + resources/views/app.blade.php | 18 +- .../app/pdf/estimate/estimate1.blade.php | 61 +- .../app/pdf/estimate/estimate2.blade.php | 47 +- .../app/pdf/estimate/estimate3.blade.php | 125 +- .../partials/billing-address.blade.php | 39 - .../partials/company-address.blade.php | 31 - .../app/pdf/estimate/partials/notes.blade.php | 8 - .../partials/shipping-address.blade.php | 40 - .../app/pdf/estimate/partials/table.blade.php | 40 +- .../views/app/pdf/invoice/invoice1.blade.php | 68 +- .../views/app/pdf/invoice/invoice2.blade.php | 49 +- .../views/app/pdf/invoice/invoice3.blade.php | 143 +- .../partials/billing-address.blade.php | 33 - .../partials/company-address.blade.php | 30 - .../app/pdf/invoice/partials/notes.blade.php | 8 - .../partials/shipping-address.blade.php | 40 - .../app/pdf/invoice/partials/table.blade.php | 43 +- .../partials/billing-address.blade.php | 33 - .../partials/company-address.blade.php | 30 - .../partials/shipping-address.blade.php | 40 - .../views/app/pdf/payment/payment.blade.php | 74 +- .../views/app/pdf/reports/expenses.blade.php | 6 +- .../app/pdf/reports/profit-loss.blade.php | 8 +- .../app/pdf/reports/sales-customers.blade.php | 4 +- .../app/pdf/reports/sales-items.blade.php | 6 +- .../app/pdf/reports/tax-summary.blade.php | 6 +- .../views/emails/send/estimate.blade.php | 7 +- resources/views/emails/send/invoice.blade.php | 9 +- resources/views/emails/send/payment.blade.php | 7 +- resources/views/emails/test.blade.php | 8 +- .../views/emails/viewed/estimate.blade.php | 3 +- .../views/emails/viewed/invoice.blade.php | 3 +- .../vendor/media-library/image.blade.php | 1 + .../media-library/placeholderSvg.blade.php | 6 + .../media-library/responsiveImage.blade.php | 1 + .../responsiveImageWithPlaceholder.blade.php | 1 + routes/api.php | 543 +- routes/channels.php | 2 +- routes/console.php | 1 + routes/web.php | 115 +- tailwind.config.js | 91 + tests/Feature/BackupTest.php | 56 + tests/Feature/CompanySettingTest.php | 344 +- tests/Feature/CustomFieldTest.php | 99 + tests/Feature/CustomerTest.php | 310 +- tests/Feature/DashboardTest.php | 60 +- tests/Feature/EstimateTest.php | 839 +- tests/Feature/ExpenseCategoryTest.php | 184 +- tests/Feature/ExpenseTest.php | 330 +- tests/Feature/FileDiskTest.php | 64 + tests/Feature/InvoiceTest.php | 894 +- tests/Feature/ItemTest.php | 302 +- tests/Feature/LocationTest.php | 43 +- tests/Feature/LoginTest.php | 22 - tests/Feature/NextNumberTest.php | 46 + tests/Feature/NotesTest.php | 66 + tests/Feature/OnboardingTest.php | 111 - tests/Feature/PaymentMethodTest.php | 104 + tests/Feature/PaymentTest.php | 417 +- tests/Feature/ReportTest.php | 175 +- tests/Feature/TaxTypeTest.php | 199 +- tests/Feature/UnitTest.php | 98 + tests/Feature/UserTest.php | 94 + tests/Helpers.php | 11 + tests/Pest.php | 7 + tests/TestCase.php | 22 +- tests/Unit/AddressTest.php | 33 + tests/Unit/CompanySettingTest.php | 56 + tests/Unit/CompanyTest.php | 34 + tests/Unit/CountryTest.php | 32 + tests/Unit/CustomFieldTest.php | 34 + tests/Unit/CustomFieldValueTest.php | 32 + tests/Unit/EstimateItemTest.php | 48 + tests/Unit/EstimateTemplateTest.php | 28 + tests/Unit/EstimateTest.php | 233 + tests/Unit/ExampleTest.php | 18 - tests/Unit/ExpenseCategoryTest.php | 27 + tests/Unit/ExpenseTest.php | 32 + tests/Unit/InvoiceItemTest.php | 48 + tests/Unit/InvoiceTemplateTest.php | 28 + tests/Unit/InvoiceTest.php | 247 + tests/Unit/ItemTest.php | 62 + tests/Unit/PaymentMethodTest.php | 36 + tests/Unit/PaymentTest.php | 74 + tests/Unit/Request/CustomFieldTest.php | 26 + tests/Unit/Request/CustomerTest.php | 59 + tests/Unit/Request/EstimateTest.php | 71 + tests/Unit/Request/ExpenseCategoryTest.php | 24 + tests/Unit/Request/ExpenseTest.php | 33 + tests/Unit/Request/GetSettingsRequestTest.php | 26 + tests/Unit/Request/InvoiceTest.php | 71 + tests/Unit/Request/ItemTest.php | 30 + tests/Unit/Request/PaymentMethodTest.php | 22 + tests/Unit/Request/PaymentTest.php | 42 + tests/Unit/Request/TaxTypeTest.php | 34 + tests/Unit/Request/UnitTest.php | 22 + .../Request/UpdateSettingsRequestTest.php | 25 + tests/Unit/SettingTest.php | 45 + tests/Unit/TaxTest.php | 65 + tests/Unit/TaxTypeTest.php | 28 + tests/Unit/UnitTest.php | 35 + tests/Unit/UserTest.php | 126 + webpack.mix.js | 25 +- yarn.lock | 1181 +- 963 files changed, 62887 insertions(+), 48868 deletions(-) delete mode 100644 app/Address.php delete mode 100644 app/CompanySetting.php delete mode 100644 app/Estimate.php delete mode 100644 app/ExpenseCategory.php create mode 100644 app/Generators/CustomPathGenerator.php create mode 100644 app/Http/Controllers/AppVersionController.php delete mode 100644 app/Http/Controllers/Auth/AccessTokensController.php delete mode 100644 app/Http/Controllers/CompanyController.php delete mode 100644 app/Http/Controllers/CustomersController.php delete mode 100644 app/Http/Controllers/EstimatesController.php delete mode 100644 app/Http/Controllers/ExpensesController.php delete mode 100644 app/Http/Controllers/FrontendController.php delete mode 100644 app/Http/Controllers/InvoicesController.php delete mode 100644 app/Http/Controllers/ItemsController.php delete mode 100644 app/Http/Controllers/LocationController.php delete mode 100644 app/Http/Controllers/OnboardingController.php delete mode 100644 app/Http/Controllers/PaymentController.php delete mode 100644 app/Http/Controllers/ReportController.php delete mode 100644 app/Http/Controllers/SettingsController.php delete mode 100644 app/Http/Controllers/UsersController.php create mode 100644 app/Http/Controllers/V1/Auth/ConfirmPasswordController.php rename app/Http/Controllers/{ => V1}/Auth/ForgotPasswordController.php (88%) create mode 100644 app/Http/Controllers/V1/Auth/IsRegisteredController.php create mode 100644 app/Http/Controllers/V1/Auth/LoginController.php create mode 100644 app/Http/Controllers/V1/Auth/RegisterController.php rename app/Http/Controllers/{ => V1}/Auth/ResetPasswordController.php (89%) create mode 100644 app/Http/Controllers/V1/Auth/VerificationController.php create mode 100644 app/Http/Controllers/V1/Backup/ApiController.php create mode 100644 app/Http/Controllers/V1/Backup/BackupsController.php create mode 100644 app/Http/Controllers/V1/Backup/DownloadBackupController.php create mode 100644 app/Http/Controllers/V1/CustomField/CustomFieldsController.php create mode 100644 app/Http/Controllers/V1/Customer/CustomerStatsController.php create mode 100644 app/Http/Controllers/V1/Customer/CustomersController.php create mode 100644 app/Http/Controllers/V1/Dashboard/DashboardChartController.php rename app/Http/Controllers/{ => V1/Dashboard}/DashboardController.php (83%) create mode 100644 app/Http/Controllers/V1/Estimate/ChangeEstimateStatusController.php create mode 100644 app/Http/Controllers/V1/Estimate/ConvertEstimateController.php create mode 100644 app/Http/Controllers/V1/Estimate/EstimatePdfController.php create mode 100644 app/Http/Controllers/V1/Estimate/EstimateTemplatesController.php create mode 100644 app/Http/Controllers/V1/Estimate/EstimatesController.php create mode 100644 app/Http/Controllers/V1/Estimate/SendEstimateController.php create mode 100644 app/Http/Controllers/V1/Expense/DownloadReceiptController.php rename app/Http/Controllers/{ExpenseCategoryController.php => V1/Expense/ExpenseCategoriesController.php} (53%) create mode 100644 app/Http/Controllers/V1/Expense/ExpensesController.php create mode 100644 app/Http/Controllers/V1/Expense/ShowReceiptController.php create mode 100644 app/Http/Controllers/V1/Expense/UploadReceiptController.php create mode 100644 app/Http/Controllers/V1/General/BootstrapController.php create mode 100644 app/Http/Controllers/V1/General/CountriesController.php create mode 100644 app/Http/Controllers/V1/General/CurrenciesController.php create mode 100644 app/Http/Controllers/V1/General/DateFormatsController.php create mode 100644 app/Http/Controllers/V1/General/FiscalYearsController.php create mode 100644 app/Http/Controllers/V1/General/LanguagesController.php create mode 100644 app/Http/Controllers/V1/General/NextNumberController.php create mode 100644 app/Http/Controllers/V1/General/NotesController.php create mode 100644 app/Http/Controllers/V1/General/SearchController.php create mode 100644 app/Http/Controllers/V1/General/TimezonesController.php create mode 100644 app/Http/Controllers/V1/Invoice/ChangeInvoiceStatusController.php create mode 100644 app/Http/Controllers/V1/Invoice/CloneInvoiceController.php create mode 100644 app/Http/Controllers/V1/Invoice/InvoicePdfController.php create mode 100644 app/Http/Controllers/V1/Invoice/InvoiceTemplatesController.php create mode 100644 app/Http/Controllers/V1/Invoice/InvoicesController.php create mode 100644 app/Http/Controllers/V1/Invoice/SendInvoiceController.php create mode 100644 app/Http/Controllers/V1/Item/ItemsController.php rename app/Http/Controllers/{UnitController.php => V1/Item/UnitsController.php} (70%) create mode 100644 app/Http/Controllers/V1/Mobile/AuthController.php create mode 100644 app/Http/Controllers/V1/Mobile/Customer/EstimatePdfController.php create mode 100644 app/Http/Controllers/V1/Mobile/Customer/InvoicePdfController.php create mode 100644 app/Http/Controllers/V1/Onboarding/DatabaseConfigurationController.php create mode 100644 app/Http/Controllers/V1/Onboarding/FinishController.php create mode 100644 app/Http/Controllers/V1/Onboarding/OnboardingWizardController.php rename app/Http/Controllers/{ => V1/Onboarding}/PermissionsController.php (88%) rename app/Http/Controllers/{ => V1/Onboarding}/RequirementsController.php (90%) rename app/Http/Controllers/{PaymentMethodController.php => V1/Payment/PaymentMethodsController.php} (64%) create mode 100644 app/Http/Controllers/V1/Payment/PaymentPdfController.php create mode 100644 app/Http/Controllers/V1/Payment/PaymentsController.php create mode 100644 app/Http/Controllers/V1/Payment/SendPaymentController.php create mode 100644 app/Http/Controllers/V1/Report/CustomerSalesReportController.php create mode 100644 app/Http/Controllers/V1/Report/ExpensesReportController.php create mode 100644 app/Http/Controllers/V1/Report/ItemSalesReportController.php create mode 100644 app/Http/Controllers/V1/Report/ProfitLossReportController.php create mode 100644 app/Http/Controllers/V1/Report/TaxSummaryReportController.php create mode 100644 app/Http/Controllers/V1/Settings/CompanyController.php create mode 100644 app/Http/Controllers/V1/Settings/DiskController.php create mode 100644 app/Http/Controllers/V1/Settings/GetCompanySettingsController.php create mode 100644 app/Http/Controllers/V1/Settings/GetUserSettingsController.php rename app/Http/Controllers/{EnvironmentController.php => V1/Settings/MailConfigurationController.php} (59%) rename app/Http/Controllers/{TaxTypeController.php => V1/Settings/TaxTypesController.php} (55%) create mode 100644 app/Http/Controllers/V1/Settings/UpdateCompanySettingsController.php create mode 100644 app/Http/Controllers/V1/Settings/UpdateUserSettingsController.php create mode 100644 app/Http/Controllers/V1/Update/CheckVersionController.php create mode 100644 app/Http/Controllers/V1/Update/CopyFilesController.php create mode 100644 app/Http/Controllers/V1/Update/DownloadUpdateController.php create mode 100644 app/Http/Controllers/V1/Update/FinishUpdateController.php create mode 100644 app/Http/Controllers/V1/Update/MigrateUpdateController.php create mode 100644 app/Http/Controllers/V1/Update/UnzipUpdateController.php rename app/Http/Controllers/{ => V1/Update}/UpdateController.php (94%) create mode 100644 app/Http/Controllers/V1/Users/UsersController.php create mode 100644 app/Http/Middleware/RedirectIfUnauthorized.php create mode 100644 app/Http/Requests/CustomFieldRequest.php create mode 100644 app/Http/Requests/DeleteCustomersRequest.php create mode 100644 app/Http/Requests/DeleteEstimatesRequest.php create mode 100644 app/Http/Requests/DeleteExpensesRequest.php create mode 100644 app/Http/Requests/DeleteInvoiceRequest.php create mode 100644 app/Http/Requests/DeleteItemsRequest.php create mode 100644 app/Http/Requests/DeletePaymentsRequest.php create mode 100644 app/Http/Requests/DiskEnvironmentRequest.php create mode 100644 app/Http/Requests/GetSettingsRequest.php create mode 100644 app/Http/Requests/NotesRequest.php create mode 100644 app/Http/Requests/SendEstimatesRequest.php create mode 100644 app/Http/Requests/SendInvoiceRequest.php create mode 100644 app/Http/Requests/SendPaymentRequest.php create mode 100644 app/Http/Requests/UpdateSettingsRequest.php create mode 100644 app/Http/Requests/UserRequest.php delete mode 100644 app/Invoice.php create mode 100644 app/Jobs/CreateBackupJob.php create mode 100644 app/Jobs/GenerateEstimatePdfJob.php create mode 100644 app/Jobs/GenerateInvoicePdfJob.php create mode 100644 app/Jobs/GeneratePaymentPdfJob.php rename app/Mail/{EstimateViewed.php => EstimateViewedMail.php} (94%) rename app/Mail/{InvoiceViewed.php => InvoiceViewedMail.php} (94%) rename app/Mail/{EstimatePdf.php => SendEstimateMail.php} (53%) rename app/Mail/{InvoicePdf.php => SendInvoiceMail.php} (53%) rename app/Mail/{PaymentPdf.php => SendPaymentMail.php} (53%) create mode 100644 app/Models/Address.php rename app/{ => Models}/Company.php (59%) create mode 100644 app/Models/CompanySetting.php rename app/{ => Models}/Country.php (56%) rename app/{ => Models}/Currency.php (72%) create mode 100644 app/Models/CustomField.php create mode 100644 app/Models/CustomFieldValue.php create mode 100644 app/Models/EmailLog.php create mode 100644 app/Models/Estimate.php rename app/{ => Models}/EstimateItem.php (84%) rename app/{ => Models}/EstimateTemplate.php (71%) rename app/{ => Models}/Expense.php (55%) create mode 100644 app/Models/ExpenseCategory.php create mode 100644 app/Models/FileDisk.php create mode 100644 app/Models/Invoice.php rename app/{ => Models}/InvoiceItem.php (85%) rename app/{ => Models}/InvoiceTemplate.php (71%) rename app/{ => Models}/Item.php (52%) create mode 100644 app/Models/Note.php create mode 100644 app/Models/Payment.php create mode 100644 app/Models/PaymentMethod.php rename app/{ => Models}/Setting.php (86%) rename app/{ => Models}/Tax.php (85%) create mode 100644 app/Models/TaxType.php create mode 100644 app/Models/Unit.php create mode 100644 app/Models/User.php create mode 100644 app/Models/UserSetting.php delete mode 100644 app/Payment.php delete mode 100644 app/PaymentMethod.php create mode 100644 app/Providers/DropboxServiceProvider.php delete mode 100644 app/Proxy/HttpKernelProxy.php create mode 100644 app/Rules/Backup/BackupDisk.php create mode 100644 app/Rules/Backup/FilesystemDisks.php create mode 100644 app/Rules/Backup/PathToZip.php create mode 100644 app/Rules/RelationNotExist.php create mode 100644 app/Rules/UniqueNumber.php delete mode 100644 app/TaxType.php create mode 100644 app/Traits/GeneratesPdfTrait.php create mode 100644 app/Traits/HasCustomFieldsTrait.php delete mode 100644 app/Unit.php delete mode 100644 app/User.php create mode 100644 config/backup.php create mode 100644 config/cors.php create mode 100644 config/hashids.php rename config/{medialibrary.php => media-library.php} (65%) create mode 100644 config/sanctum.php create mode 100644 database/factories/CompanySettingFactory.php create mode 100644 database/factories/CustomFieldFactory.php create mode 100644 database/factories/CustomFieldValueFactory.php create mode 100644 database/factories/EmailLogFactory.php create mode 100644 database/factories/FileDiskFactory.php delete mode 100644 database/factories/ModelFactory.php create mode 100644 database/factories/NoteFactory.php create mode 100644 database/factories/UnitFactory.php create mode 100644 database/factories/UserFactory.php delete mode 100644 database/migrations/2017_12_02_204902_create_permission_tables.php create mode 100644 database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 database/migrations/2020_02_01_063235_create_custom_fields_table.php create mode 100644 database/migrations/2020_02_01_063509_create_custom_field_values_table.php create mode 100644 database/migrations/2020_09_07_103054_create_file_disks_table.php create mode 100644 database/migrations/2020_09_22_153617_add_columns_to_media_table.php create mode 100644 database/migrations/2020_09_26_100951_create_user_settings_table.php create mode 100644 database/migrations/2020_10_01_102913_add_company_to_addresses_table.php create mode 100644 database/migrations/2020_10_17_074745_create_notes_table.php create mode 100644 database/migrations/2020_10_24_091934_change_value_column_to_text_on_company_settings_table.php create mode 100644 database/migrations/2020_11_23_050206_add_creator_in_invoices_table.php create mode 100644 database/migrations/2020_11_23_050252_add_creator_in_estimates_table.php create mode 100644 database/migrations/2020_11_23_050316_add_creator_in_payments_table.php create mode 100644 database/migrations/2020_11_23_050333_add_creator_in_expenses_table.php create mode 100644 database/migrations/2020_11_23_050406_add_creator_in_items_table.php create mode 100644 database/migrations/2020_11_23_065815_add_creator_in_users_table.php create mode 100644 database/migrations/2020_11_23_074154_create_email_logs_table.php create mode 100644 database/migrations/2020_12_02_090527_update_crater_version_400.php rename database/{seeds => seeders}/CountriesTableSeeder.php (99%) rename database/{seeds => seeders}/CurrenciesTableSeeder.php (99%) rename database/{seeds => seeders}/DatabaseSeeder.php (72%) create mode 100644 database/seeders/DefaultSettingsSeeder.php create mode 100644 database/seeders/DemoSeeder.php rename database/{seeds => seeders}/EstimateTemplateSeeder.php (91%) rename database/{seeds => seeders}/InvoiceTemplateSeeder.php (91%) rename database/{seeds => seeders}/PaymentMethodSeeder.php (88%) rename database/{seeds => seeders}/UnitSeeder.php (94%) create mode 100644 database/seeders/UsersTableSeeder.php delete mode 100644 database/seeds/RoleSeeder.php delete mode 100644 database/seeds/SettingsSeeder.php delete mode 100644 database/seeds/UsersTableSeeder.php create mode 100644 public/assets/js/app.js.LICENSE.txt rename public/assets/js/{ => pace}/pace.js (100%) create mode 100644 resources/assets/js/components/GlobalSearch.vue delete mode 100644 resources/assets/js/components/base/BaseButton.vue create mode 100644 resources/assets/js/components/base/BaseCustomInput.vue create mode 100644 resources/assets/js/components/base/BaseDatePicker.vue delete mode 100644 resources/assets/js/components/base/BaseInput.vue create mode 100644 resources/assets/js/components/base/BasePage.vue delete mode 100644 resources/assets/js/components/base/BasePrefixInput.vue delete mode 100644 resources/assets/js/components/base/BaseSwitch.vue delete mode 100644 resources/assets/js/components/base/BaseTextArea.vue create mode 100644 resources/assets/js/components/base/BaseTimePicker.vue delete mode 100755 resources/assets/js/components/base/base-date-picker/BaseDatePicker.vue delete mode 100755 resources/assets/js/components/base/base-date-picker/DateInput.vue delete mode 100755 resources/assets/js/components/base/base-date-picker/PickerDay.vue delete mode 100755 resources/assets/js/components/base/base-date-picker/PickerMonth.vue delete mode 100755 resources/assets/js/components/base/base-date-picker/PickerYear.vue delete mode 100755 resources/assets/js/components/base/base-date-picker/src/DateUtils.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/Language.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/index.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/af.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ar.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/bg.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/bs.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ca.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/cs.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/da.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/de.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ee.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/el.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/en.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/es.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/fa.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/fi.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/fo.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/fr.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ge.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/gl.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/he.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/hr.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/hu.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/id.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/is.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/it.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ja.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/kk.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ko.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/lb.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/lt.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/lv.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/mk.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/mn.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/nb-NO.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/nl.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/pl.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/pt-BR.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ro.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ru.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/sk.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/sl-SI.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/sr-CYRL.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/sr.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/sv.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/th.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/tr.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/uk.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/ur.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/vi.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/zh-HK.js delete mode 100755 resources/assets/js/components/base/base-date-picker/src/locale/translations/zh.js delete mode 100755 resources/assets/js/components/base/base-table/classes/Column.js delete mode 100755 resources/assets/js/components/base/base-table/classes/Row.js delete mode 100755 resources/assets/js/components/base/base-table/components/Pagination.vue delete mode 100755 resources/assets/js/components/base/base-table/components/TableCell.js delete mode 100755 resources/assets/js/components/base/base-table/components/TableColumn.vue delete mode 100755 resources/assets/js/components/base/base-table/components/TableColumnHeader.vue delete mode 100755 resources/assets/js/components/base/base-table/components/TableComponent.vue delete mode 100755 resources/assets/js/components/base/base-table/components/TableRow.vue delete mode 100755 resources/assets/js/components/base/base-table/expiring-storage.js delete mode 100755 resources/assets/js/components/base/base-table/helpers.js delete mode 100755 resources/assets/js/components/base/base-table/index.js delete mode 100755 resources/assets/js/components/base/base-table/settings.js create mode 100644 resources/assets/js/components/base/modal/BackupModal.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/Index.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/DateTimeType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/DateType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/DropdownType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/InputType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/NumberType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/OptionsCreate.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/PhoneType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/SwitchType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/TextAreaType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/TimeType.vue create mode 100644 resources/assets/js/components/base/modal/CustomField/types/UrlType.vue create mode 100644 resources/assets/js/components/base/modal/FileDiskModal.vue create mode 100644 resources/assets/js/components/base/modal/NoteModal.vue create mode 100644 resources/assets/js/components/base/modal/SendEstimateModal.vue create mode 100644 resources/assets/js/components/base/modal/SendInvoiceModal.vue create mode 100644 resources/assets/js/components/base/modal/SendPaymentModal.vue create mode 100644 resources/assets/js/components/base/modal/SetDefaultDiskModal.vue create mode 100644 resources/assets/js/components/base/modal/disks/DoSpacesDisk.vue create mode 100644 resources/assets/js/components/base/modal/disks/DropboxDisk.vue create mode 100644 resources/assets/js/components/base/modal/disks/LocalDisk.vue create mode 100644 resources/assets/js/components/base/modal/disks/S3Disk.vue delete mode 100644 resources/assets/js/components/base/popup/BasePopup.vue create mode 100644 resources/assets/js/components/base/popup/NoteSelectPopup.vue create mode 100644 resources/assets/js/components/base/theme/BaseSelect.js create mode 100644 resources/assets/js/components/base/theme/DatePicker.js create mode 100644 resources/assets/js/components/base/theme/index.js delete mode 100644 resources/assets/js/components/collapse/VCollapse.vue delete mode 100644 resources/assets/js/components/collapse/VCollapseItem.vue create mode 100644 resources/assets/js/components/custom-fields/DateField.vue create mode 100644 resources/assets/js/components/custom-fields/DateTimeField.vue create mode 100644 resources/assets/js/components/custom-fields/DropdownField.vue create mode 100644 resources/assets/js/components/custom-fields/InputField.vue create mode 100644 resources/assets/js/components/custom-fields/NumberField.vue create mode 100644 resources/assets/js/components/custom-fields/PhoneField.vue create mode 100644 resources/assets/js/components/custom-fields/SwitchField.vue create mode 100644 resources/assets/js/components/custom-fields/TextAreaField.vue create mode 100644 resources/assets/js/components/custom-fields/TimeField.vue create mode 100644 resources/assets/js/components/custom-fields/UrlField.vue delete mode 100644 resources/assets/js/components/dropdown/VDropdown.vue delete mode 100644 resources/assets/js/components/dropdown/VDropdownDivider.vue delete mode 100644 resources/assets/js/components/dropdown/VDropdownItem.vue create mode 100644 resources/assets/js/components/icon/DragIcon.vue create mode 100644 resources/assets/js/components/icon/LoadingIcon.vue create mode 100644 resources/assets/js/components/icon/SaveIcon.vue create mode 100644 resources/assets/js/components/theme/SwBadge.js create mode 100644 resources/assets/js/components/theme/SwButton.js create mode 100644 resources/assets/js/components/theme/SwCard.js create mode 100644 resources/assets/js/components/theme/SwDropdown.js create mode 100644 resources/assets/js/components/theme/SwFilterWrapper.js create mode 100644 resources/assets/js/components/theme/SwInput.js create mode 100644 resources/assets/js/components/theme/SwList.js create mode 100644 resources/assets/js/components/theme/SwModal.js create mode 100644 resources/assets/js/components/theme/SwPopup.js create mode 100644 resources/assets/js/components/theme/SwRadio.js create mode 100644 resources/assets/js/components/theme/SwSwitch.js create mode 100644 resources/assets/js/components/theme/SwTable.js create mode 100644 resources/assets/js/components/theme/SwTextarea.js create mode 100644 resources/assets/js/components/theme/SwWizard.js create mode 100644 resources/assets/js/components/theme/index.js delete mode 100644 resources/assets/js/helpers/layout.js delete mode 100644 resources/assets/js/helpers/plugin.js create mode 100644 resources/assets/js/mixins/customFields.js create mode 100644 resources/assets/js/plugins/hi.json create mode 100644 resources/assets/js/plugins/pt.json create mode 100644 resources/assets/js/store/modules/backup/actions.js create mode 100644 resources/assets/js/store/modules/backup/getters.js create mode 100644 resources/assets/js/store/modules/backup/index.js create mode 100644 resources/assets/js/store/modules/backup/mutation-types.js create mode 100644 resources/assets/js/store/modules/backup/mutations.js delete mode 100644 resources/assets/js/store/modules/currency/actions.js delete mode 100644 resources/assets/js/store/modules/currency/getters.js delete mode 100644 resources/assets/js/store/modules/currency/mutation-types.js delete mode 100644 resources/assets/js/store/modules/currency/mutations.js create mode 100644 resources/assets/js/store/modules/custom-field/actions.js create mode 100644 resources/assets/js/store/modules/custom-field/getters.js rename resources/assets/js/store/modules/{currency => custom-field}/index.js (77%) create mode 100644 resources/assets/js/store/modules/custom-field/mutation-types.js create mode 100644 resources/assets/js/store/modules/custom-field/mutations.js create mode 100644 resources/assets/js/store/modules/disk/actions.js create mode 100644 resources/assets/js/store/modules/disk/getters.js rename resources/assets/js/store/modules/{reports/invoice => disk}/index.js (81%) create mode 100644 resources/assets/js/store/modules/disk/mutation-types.js create mode 100644 resources/assets/js/store/modules/disk/mutations.js create mode 100644 resources/assets/js/store/modules/estimate-template/actions.js create mode 100644 resources/assets/js/store/modules/estimate-template/getters.js rename resources/assets/js/store/modules/{reports/expense => estimate-template}/index.js (83%) create mode 100644 resources/assets/js/store/modules/estimate-template/mutation-types.js create mode 100644 resources/assets/js/store/modules/estimate-template/mutations.js create mode 100644 resources/assets/js/store/modules/invoice-template/actions.js create mode 100644 resources/assets/js/store/modules/invoice-template/getters.js rename resources/assets/js/store/modules/{reports/profit-loss => invoice-template}/index.js (83%) create mode 100644 resources/assets/js/store/modules/invoice-template/mutation-types.js create mode 100644 resources/assets/js/store/modules/invoice-template/mutations.js create mode 100644 resources/assets/js/store/modules/notes/actions.js create mode 100644 resources/assets/js/store/modules/notes/getters.js rename resources/assets/js/store/modules/{reports/tax => notes}/index.js (86%) create mode 100644 resources/assets/js/store/modules/notes/mutation-types.js create mode 100644 resources/assets/js/store/modules/notes/mutations.js delete mode 100644 resources/assets/js/store/modules/reports/estimate/actions.js delete mode 100644 resources/assets/js/store/modules/reports/estimate/getters.js delete mode 100644 resources/assets/js/store/modules/reports/estimate/mutation-types.js delete mode 100644 resources/assets/js/store/modules/reports/estimate/mutations.js delete mode 100644 resources/assets/js/store/modules/reports/expense/actions.js delete mode 100644 resources/assets/js/store/modules/reports/expense/getters.js delete mode 100644 resources/assets/js/store/modules/reports/expense/mutation-types.js delete mode 100644 resources/assets/js/store/modules/reports/expense/mutations.js delete mode 100644 resources/assets/js/store/modules/reports/invoice/actions.js delete mode 100644 resources/assets/js/store/modules/reports/invoice/getters.js delete mode 100644 resources/assets/js/store/modules/reports/invoice/mutation-types.js delete mode 100644 resources/assets/js/store/modules/reports/invoice/mutations.js delete mode 100644 resources/assets/js/store/modules/reports/profit-loss/actions.js delete mode 100644 resources/assets/js/store/modules/reports/profit-loss/getters.js delete mode 100644 resources/assets/js/store/modules/reports/profit-loss/mutation-types.js delete mode 100644 resources/assets/js/store/modules/reports/profit-loss/mutations.js delete mode 100644 resources/assets/js/store/modules/reports/sales/actions.js delete mode 100644 resources/assets/js/store/modules/reports/sales/getters.js delete mode 100644 resources/assets/js/store/modules/reports/sales/index.js delete mode 100644 resources/assets/js/store/modules/reports/sales/mutation-types.js delete mode 100644 resources/assets/js/store/modules/reports/sales/mutations.js delete mode 100644 resources/assets/js/store/modules/reports/tax/actions.js delete mode 100644 resources/assets/js/store/modules/reports/tax/getters.js delete mode 100644 resources/assets/js/store/modules/reports/tax/mutation-types.js delete mode 100644 resources/assets/js/store/modules/reports/tax/mutations.js create mode 100644 resources/assets/js/store/modules/search/actions.js create mode 100644 resources/assets/js/store/modules/search/getters.js rename resources/assets/js/store/modules/{reports/estimate => search}/index.js (80%) create mode 100644 resources/assets/js/store/modules/search/mutation-types.js create mode 100644 resources/assets/js/store/modules/search/mutations.js delete mode 100644 resources/assets/js/store/modules/settings/company-info/actions.js delete mode 100644 resources/assets/js/store/modules/settings/company-info/getters.js delete mode 100644 resources/assets/js/store/modules/settings/company-info/index.js delete mode 100644 resources/assets/js/store/modules/settings/company-info/mutation-types.js delete mode 100644 resources/assets/js/store/modules/settings/company-info/mutations.js delete mode 100644 resources/assets/js/store/modules/settings/general/actions.js delete mode 100644 resources/assets/js/store/modules/settings/general/getters.js delete mode 100644 resources/assets/js/store/modules/settings/general/index.js delete mode 100644 resources/assets/js/store/modules/settings/general/mutation-types.js delete mode 100644 resources/assets/js/store/modules/settings/general/mutations.js delete mode 100644 resources/assets/js/store/modules/settings/preferences/actions.js delete mode 100644 resources/assets/js/store/modules/settings/preferences/getters.js delete mode 100644 resources/assets/js/store/modules/settings/preferences/index.js delete mode 100644 resources/assets/js/store/modules/settings/preferences/mutation-types.js delete mode 100644 resources/assets/js/store/modules/settings/preferences/mutations.js delete mode 100644 resources/assets/js/store/modules/settings/user-profile/actions.js delete mode 100644 resources/assets/js/store/modules/settings/user-profile/getters.js delete mode 100644 resources/assets/js/store/modules/settings/user-profile/index.js delete mode 100644 resources/assets/js/store/modules/settings/user-profile/mutation-types.js delete mode 100644 resources/assets/js/store/modules/settings/user-profile/mutations.js create mode 100644 resources/assets/js/store/modules/users/actions.js create mode 100644 resources/assets/js/store/modules/users/getters.js create mode 100644 resources/assets/js/store/modules/users/index.js create mode 100644 resources/assets/js/store/modules/users/mutation-types.js create mode 100644 resources/assets/js/store/modules/users/mutations.js delete mode 100644 resources/assets/js/views/components/ImageBox.vue delete mode 100644 resources/assets/js/views/components/ImageRadio.vue delete mode 100644 resources/assets/js/views/components/SettingListBox.vue create mode 100644 resources/assets/js/views/customers/View.vue create mode 100644 resources/assets/js/views/customers/partials/CustomerChart.vue create mode 100644 resources/assets/js/views/customers/partials/CustomerInfo.vue create mode 100644 resources/assets/js/views/customers/partials/CustomerViewSidebar.vue create mode 100644 resources/assets/js/views/dashboard/DashboardChart.vue create mode 100644 resources/assets/js/views/dashboard/DashboardStats.vue create mode 100644 resources/assets/js/views/dashboard/DashboardTable.vue create mode 100644 resources/assets/js/views/estimates/CustomerSelect.vue create mode 100644 resources/assets/js/views/invoices/CustomerSelect.vue create mode 100644 resources/assets/js/views/settings/BackupSetting.vue delete mode 100644 resources/assets/js/views/settings/CompanyInfo.vue create mode 100644 resources/assets/js/views/settings/CompanyInfoSetting.vue create mode 100644 resources/assets/js/views/settings/CustomFieldsSetting.vue delete mode 100644 resources/assets/js/views/settings/Customization.vue create mode 100644 resources/assets/js/views/settings/CustomizationSetting.vue delete mode 100644 resources/assets/js/views/settings/ExpenseCategory.vue create mode 100644 resources/assets/js/views/settings/ExpenseCategorySetting.vue create mode 100644 resources/assets/js/views/settings/FileDiskSetting.vue delete mode 100644 resources/assets/js/views/settings/GeneralSetting.vue delete mode 100644 resources/assets/js/views/settings/MailConfig.vue create mode 100644 resources/assets/js/views/settings/MailConfigSetting.vue create mode 100644 resources/assets/js/views/settings/NotesSetting.vue delete mode 100644 resources/assets/js/views/settings/Notifications.vue create mode 100644 resources/assets/js/views/settings/NotificationsSetting.vue create mode 100644 resources/assets/js/views/settings/PaymentsModeSetting.vue delete mode 100644 resources/assets/js/views/settings/Preferences.vue create mode 100644 resources/assets/js/views/settings/PreferencesSetting.vue create mode 100644 resources/assets/js/views/settings/SettingsIndex.vue delete mode 100644 resources/assets/js/views/settings/TaxTypes.vue create mode 100644 resources/assets/js/views/settings/TaxTypesSetting.vue rename resources/assets/js/views/settings/{UpdateApp.vue => UpdateAppSetting.vue} (51%) delete mode 100644 resources/assets/js/views/settings/UserProfile.vue create mode 100644 resources/assets/js/views/settings/UserProfileSetting.vue create mode 100644 resources/assets/js/views/settings/customization-tabs/AddressTab.vue create mode 100644 resources/assets/js/views/settings/customization-tabs/EstimatesTab.vue create mode 100644 resources/assets/js/views/settings/customization-tabs/InvoicesTab.vue create mode 100644 resources/assets/js/views/settings/customization-tabs/ItemsTab.vue create mode 100644 resources/assets/js/views/settings/customization-tabs/PaymentsTab.vue delete mode 100644 resources/assets/js/views/settings/layout/Index.vue create mode 100644 resources/assets/js/views/settings/mail-driver/BasicMailDriver.vue create mode 100644 resources/assets/js/views/settings/mail-driver/MailgunMailDriver.vue create mode 100644 resources/assets/js/views/settings/mail-driver/SesMailDriver.vue create mode 100644 resources/assets/js/views/settings/mail-driver/SmtpMailDriver.vue delete mode 100644 resources/assets/js/views/settings/mailDriver/Basic.vue delete mode 100644 resources/assets/js/views/settings/mailDriver/Mailgun.vue delete mode 100644 resources/assets/js/views/settings/mailDriver/Ses.vue delete mode 100644 resources/assets/js/views/settings/mailDriver/Smtp.vue create mode 100644 resources/assets/js/views/users/Create.vue create mode 100644 resources/assets/js/views/users/Index.vue delete mode 100644 resources/assets/js/views/wizard/CompanyInfo.vue delete mode 100644 resources/assets/js/views/wizard/Database.vue delete mode 100644 resources/assets/js/views/wizard/EmailConfiguration.vue delete mode 100644 resources/assets/js/views/wizard/Index.vue delete mode 100644 resources/assets/js/views/wizard/Permission.vue delete mode 100644 resources/assets/js/views/wizard/Settings.vue delete mode 100644 resources/assets/js/views/wizard/SystemRequirement.vue delete mode 100644 resources/assets/js/views/wizard/UserProfile.vue create mode 100644 resources/assets/js/views/wizard/Wizard.vue create mode 100644 resources/assets/js/views/wizard/WizardCompanyInfoStep.vue create mode 100644 resources/assets/js/views/wizard/WizardDatabaseStep.vue create mode 100644 resources/assets/js/views/wizard/WizardEmailConfigStep.vue create mode 100644 resources/assets/js/views/wizard/WizardPermissionStep.vue create mode 100644 resources/assets/js/views/wizard/WizardSettingsStep.vue create mode 100644 resources/assets/js/views/wizard/WizardSystemRequirementStep.vue create mode 100644 resources/assets/js/views/wizard/WizardUserProfileStep.vue create mode 100644 resources/assets/js/views/wizard/database/MysqlDatabase.vue create mode 100644 resources/assets/js/views/wizard/database/PgsqlDatabase.vue create mode 100644 resources/assets/js/views/wizard/database/SqliteDatabase.vue create mode 100644 resources/assets/js/views/wizard/database/SqlsrvDatabase.vue create mode 100644 resources/assets/js/views/wizard/mail-driver/BasicMailDriver.vue create mode 100644 resources/assets/js/views/wizard/mail-driver/MailgunMailDriver.vue create mode 100644 resources/assets/js/views/wizard/mail-driver/SesMailDriver.vue create mode 100644 resources/assets/js/views/wizard/mail-driver/SmtpMailDriver.vue delete mode 100644 resources/assets/js/views/wizard/mailDriver/Basic.vue delete mode 100644 resources/assets/js/views/wizard/mailDriver/Mailgun.vue delete mode 100644 resources/assets/js/views/wizard/mailDriver/Ses.vue delete mode 100644 resources/assets/js/views/wizard/mailDriver/Smtp.vue delete mode 100644 resources/assets/plugins/alertify/alertify.js delete mode 100644 resources/assets/plugins/alertify/alertify.scss delete mode 100644 resources/assets/plugins/vue-font-awesome/index.js delete mode 100644 resources/assets/sass/base.scss create mode 100644 resources/assets/sass/components/animation.scss delete mode 100644 resources/assets/sass/components/avatar-cropper.scss delete mode 100644 resources/assets/sass/components/base-modal.scss delete mode 100644 resources/assets/sass/components/base-tabs.scss delete mode 100644 resources/assets/sass/components/base/base-button.scss delete mode 100644 resources/assets/sass/components/base/base-date-picker.scss delete mode 100644 resources/assets/sass/components/base/base-input.scss delete mode 100644 resources/assets/sass/components/base/base-loader.scss delete mode 100644 resources/assets/sass/components/base/base-loader/animation/_functions.scss delete mode 100644 resources/assets/sass/components/base/base-loader/animation/_mixins.scss delete mode 100644 resources/assets/sass/components/base/base-loader/animation/_variables.scss delete mode 100644 resources/assets/sass/components/base/base-loader/index.scss delete mode 100644 resources/assets/sass/components/base/base-popup.scss delete mode 100644 resources/assets/sass/components/base/base-prefix-input.scss delete mode 100644 resources/assets/sass/components/base/base-switch.scss delete mode 100644 resources/assets/sass/components/base/base-text-area.scss delete mode 100644 resources/assets/sass/components/buttons.scss delete mode 100644 resources/assets/sass/components/cards.scss delete mode 100644 resources/assets/sass/components/category-modal.scss delete mode 100644 resources/assets/sass/components/charts.scss delete mode 100644 resources/assets/sass/components/customer-modal.scss delete mode 100644 resources/assets/sass/components/customer-select.scss delete mode 100644 resources/assets/sass/components/forms.scss delete mode 100644 resources/assets/sass/components/hamburgers.scss delete mode 100644 resources/assets/sass/components/item-modal.scss delete mode 100644 resources/assets/sass/components/item-select.scss delete mode 100644 resources/assets/sass/components/item-unit-modal.scss delete mode 100644 resources/assets/sass/components/mail-test-modal.scss delete mode 100644 resources/assets/sass/components/payment-modes-modal.scss delete mode 100644 resources/assets/sass/components/tables.scss delete mode 100644 resources/assets/sass/components/tabs.scss delete mode 100644 resources/assets/sass/components/tax-select.scss delete mode 100644 resources/assets/sass/components/tax-type-modal.scss delete mode 100644 resources/assets/sass/components/template-modal.scss delete mode 100644 resources/assets/sass/components/tooltips.scss delete mode 100644 resources/assets/sass/components/transitions.scss delete mode 100644 resources/assets/sass/components/vue-color.scss delete mode 100644 resources/assets/sass/components/vue-date-picker.scss delete mode 100644 resources/assets/sass/components/vue-dropdown.scss delete mode 100644 resources/assets/sass/components/vue-multi-select.scss delete mode 100644 resources/assets/sass/components/vue-tabs.scss delete mode 100644 resources/assets/sass/layouts/crater-sidebar.scss delete mode 100644 resources/assets/sass/layouts/layout-icon-sidebar.scss delete mode 100644 resources/assets/sass/layouts/layout.scss delete mode 100644 resources/assets/sass/pages/404.scss delete mode 100644 resources/assets/sass/pages/customers.scss delete mode 100644 resources/assets/sass/pages/customization.scss delete mode 100644 resources/assets/sass/pages/dashboard.scss delete mode 100644 resources/assets/sass/pages/estimates/create.scss delete mode 100644 resources/assets/sass/pages/estimates/index.scss delete mode 100644 resources/assets/sass/pages/estimates/view.scss delete mode 100644 resources/assets/sass/pages/expenses.scss delete mode 100644 resources/assets/sass/pages/invoices/create.scss delete mode 100644 resources/assets/sass/pages/invoices/index.scss delete mode 100644 resources/assets/sass/pages/invoices/view.scss delete mode 100644 resources/assets/sass/pages/items.scss delete mode 100644 resources/assets/sass/pages/login-3.scss delete mode 100644 resources/assets/sass/pages/login.scss delete mode 100644 resources/assets/sass/pages/payment-view.scss delete mode 100644 resources/assets/sass/pages/payments.scss delete mode 100644 resources/assets/sass/pages/reports.scss delete mode 100644 resources/assets/sass/pages/settings.scss delete mode 100644 resources/assets/sass/pages/statuses.scss delete mode 100644 resources/assets/sass/pages/wizard.scss delete mode 100644 resources/assets/sass/partials/header.scss delete mode 100644 resources/assets/sass/partials/sidebar.scss delete mode 100644 resources/assets/sass/skins/skin-crater.scss delete mode 100644 resources/assets/sass/variables.scss create mode 100644 resources/lang/vendor/backup/ar/notifications.php create mode 100644 resources/lang/vendor/backup/cs/notifications.php create mode 100644 resources/lang/vendor/backup/da/notifications.php create mode 100644 resources/lang/vendor/backup/de/notifications.php create mode 100644 resources/lang/vendor/backup/en/notifications.php create mode 100644 resources/lang/vendor/backup/es/notifications.php create mode 100644 resources/lang/vendor/backup/fa/notifications.php create mode 100644 resources/lang/vendor/backup/fi/notifications.php create mode 100644 resources/lang/vendor/backup/fr/notifications.php create mode 100644 resources/lang/vendor/backup/hi/notifications.php create mode 100644 resources/lang/vendor/backup/id/notifications.php create mode 100644 resources/lang/vendor/backup/it/notifications.php create mode 100644 resources/lang/vendor/backup/nl/notifications.php create mode 100644 resources/lang/vendor/backup/pl/notifications.php create mode 100644 resources/lang/vendor/backup/pt-BR/notifications.php create mode 100644 resources/lang/vendor/backup/ro/notifications.php create mode 100644 resources/lang/vendor/backup/ru/notifications.php create mode 100644 resources/lang/vendor/backup/tr/notifications.php create mode 100644 resources/lang/vendor/backup/uk/notifications.php create mode 100644 resources/lang/vendor/backup/zh-CN/notifications.php create mode 100644 resources/lang/vendor/backup/zh-TW/notifications.php delete mode 100644 resources/views/app/pdf/estimate/partials/billing-address.blade.php delete mode 100644 resources/views/app/pdf/estimate/partials/company-address.blade.php delete mode 100644 resources/views/app/pdf/estimate/partials/notes.blade.php delete mode 100644 resources/views/app/pdf/estimate/partials/shipping-address.blade.php delete mode 100644 resources/views/app/pdf/invoice/partials/billing-address.blade.php delete mode 100644 resources/views/app/pdf/invoice/partials/company-address.blade.php delete mode 100644 resources/views/app/pdf/invoice/partials/notes.blade.php delete mode 100644 resources/views/app/pdf/invoice/partials/shipping-address.blade.php delete mode 100644 resources/views/app/pdf/payment/partials/billing-address.blade.php delete mode 100644 resources/views/app/pdf/payment/partials/company-address.blade.php delete mode 100644 resources/views/app/pdf/payment/partials/shipping-address.blade.php create mode 100644 resources/views/vendor/media-library/image.blade.php create mode 100644 resources/views/vendor/media-library/placeholderSvg.blade.php create mode 100644 resources/views/vendor/media-library/responsiveImage.blade.php create mode 100644 resources/views/vendor/media-library/responsiveImageWithPlaceholder.blade.php create mode 100644 tailwind.config.js create mode 100644 tests/Feature/BackupTest.php create mode 100644 tests/Feature/CustomFieldTest.php create mode 100644 tests/Feature/FileDiskTest.php delete mode 100644 tests/Feature/LoginTest.php create mode 100644 tests/Feature/NextNumberTest.php create mode 100644 tests/Feature/NotesTest.php delete mode 100644 tests/Feature/OnboardingTest.php create mode 100644 tests/Feature/PaymentMethodTest.php create mode 100644 tests/Feature/UnitTest.php create mode 100644 tests/Feature/UserTest.php create mode 100644 tests/Helpers.php create mode 100644 tests/Pest.php create mode 100644 tests/Unit/AddressTest.php create mode 100644 tests/Unit/CompanySettingTest.php create mode 100644 tests/Unit/CompanyTest.php create mode 100644 tests/Unit/CountryTest.php create mode 100644 tests/Unit/CustomFieldTest.php create mode 100644 tests/Unit/CustomFieldValueTest.php create mode 100644 tests/Unit/EstimateItemTest.php create mode 100644 tests/Unit/EstimateTemplateTest.php create mode 100644 tests/Unit/EstimateTest.php delete mode 100644 tests/Unit/ExampleTest.php create mode 100644 tests/Unit/ExpenseCategoryTest.php create mode 100644 tests/Unit/ExpenseTest.php create mode 100644 tests/Unit/InvoiceItemTest.php create mode 100644 tests/Unit/InvoiceTemplateTest.php create mode 100644 tests/Unit/InvoiceTest.php create mode 100644 tests/Unit/ItemTest.php create mode 100644 tests/Unit/PaymentMethodTest.php create mode 100644 tests/Unit/PaymentTest.php create mode 100644 tests/Unit/Request/CustomFieldTest.php create mode 100644 tests/Unit/Request/CustomerTest.php create mode 100644 tests/Unit/Request/EstimateTest.php create mode 100644 tests/Unit/Request/ExpenseCategoryTest.php create mode 100644 tests/Unit/Request/ExpenseTest.php create mode 100644 tests/Unit/Request/GetSettingsRequestTest.php create mode 100644 tests/Unit/Request/InvoiceTest.php create mode 100644 tests/Unit/Request/ItemTest.php create mode 100644 tests/Unit/Request/PaymentMethodTest.php create mode 100644 tests/Unit/Request/PaymentTest.php create mode 100644 tests/Unit/Request/TaxTypeTest.php create mode 100644 tests/Unit/Request/UnitTest.php create mode 100644 tests/Unit/Request/UpdateSettingsRequestTest.php create mode 100644 tests/Unit/SettingTest.php create mode 100644 tests/Unit/TaxTest.php create mode 100644 tests/Unit/TaxTypeTest.php create mode 100644 tests/Unit/UnitTest.php create mode 100644 tests/Unit/UserTest.php diff --git a/.env.example b/.env.example index 6ca94456..6cccbc63 100644 --- a/.env.example +++ b/.env.example @@ -13,8 +13,9 @@ DB_PASSWORD="crater" BROADCAST_DRIVER=log CACHE_DRIVER=file -SESSION_DRIVER=file QUEUE_DRIVER=sync +SESSION_DRIVER=cookie +SESSION_LIFETIME=1440 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null @@ -31,6 +32,5 @@ PUSHER_APP_ID= PUSHER_KEY= PUSHER_SECRET= -PROXY_OAUTH_CLIENT_ID=2 -PROXY_OAUTH_CLIENT_SECRET=SECRET-GENERATED-KEY-HERE -PROXY_OAUTH_GRANT_TYPE=password +SANCTUM_STATEFUL_DOMAINS=crater.test +SESSION_DOMAIN=crater.test diff --git a/.env.testing b/.env.testing index 4f5beef0..5cf7f514 100644 --- a/.env.testing +++ b/.env.testing @@ -2,3 +2,12 @@ APP_ENV=testing APP_DEBUG=true APP_KEY=base64:IdDlpLmYyWA9z4Ruj5st1FSYrhCR7lPOscLGCz2Jf4I= DB_CONNECTION=sqlite + +MAIL_DRIVER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=587 +MAIL_USERNAME=ff538f0e1037f4 +MAIL_PASSWORD=c04c81145fcb73 +MAIL_ENCRYPTION=tls +MAIL_FROM_ADDRESS="admin@crater.com" +MAIL_FROM_NAME="John Doe" diff --git a/.eslintrc b/.eslintrc index 3f1a3248..18e7e00f 100644 --- a/.eslintrc +++ b/.eslintrc @@ -7,12 +7,15 @@ "plugin:prettier/recommended" ], "rules": { - "vue/max-attributes-per-line": ["error", { - "singleline": 10, - "multiline": { - "max": 1, - "allowFirstLine": false + "vue/max-attributes-per-line": [ + "error", + { + "singleline": 20, + "multiline": { + "max": 1, + "allowFirstLine": false + } } - }] + ] } } \ No newline at end of file diff --git a/app/Address.php b/app/Address.php deleted file mode 100644 index 4935a771..00000000 --- a/app/Address.php +++ /dev/null @@ -1,36 +0,0 @@ -belongsTo(User::class); - } - - public function country() - { - return $this->belongsTo(Country::class); - } -} diff --git a/app/CompanySetting.php b/app/CompanySetting.php deleted file mode 100644 index dd927397..00000000 --- a/app/CompanySetting.php +++ /dev/null @@ -1,47 +0,0 @@ -belongsTo(Company::class); - } - - public static function setSetting($key, $setting, $company_id) - { - $old = self::whereOption($key)->whereCompany($company_id)->first(); - - if ($old) { - $old->value = $setting; - $old->save(); - return; - } - - $set = new CompanySetting(); - $set->option = $key; - $set->value = $setting; - $set->company_id = $company_id; - $set->save(); - } - - public static function getSetting($key, $company_id) - { - $setting = static::whereOption($key)->whereCompany($company_id)->first(); - - if ($setting) { - return $setting->value; - } else { - return null; - } - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('company_id', $company_id); - } -} diff --git a/app/Console/Commands/CheckEstimateStatus.php b/app/Console/Commands/CheckEstimateStatus.php index b9d0c81d..770c9c3b 100644 --- a/app/Console/Commands/CheckEstimateStatus.php +++ b/app/Console/Commands/CheckEstimateStatus.php @@ -3,7 +3,7 @@ namespace Crater\Console\Commands; use Illuminate\Console\Command; use Carbon\Carbon; -use Crater\Estimate; +use Crater\Models\Estimate; class CheckEstimateStatus extends Command { diff --git a/app/Console/Commands/CheckInvoiceStatus.php b/app/Console/Commands/CheckInvoiceStatus.php index 8de9edfe..d67ef8a1 100644 --- a/app/Console/Commands/CheckInvoiceStatus.php +++ b/app/Console/Commands/CheckInvoiceStatus.php @@ -3,7 +3,7 @@ namespace Crater\Console\Commands; use Illuminate\Console\Command; use Carbon\Carbon; -use Crater\Invoice; +use Crater\Models\Invoice; class CheckInvoiceStatus extends Command { diff --git a/app/Console/Commands/UpdateCommand.php b/app/Console/Commands/UpdateCommand.php index a01a94d3..c39ed849 100644 --- a/app/Console/Commands/UpdateCommand.php +++ b/app/Console/Commands/UpdateCommand.php @@ -4,7 +4,7 @@ namespace Crater\Console\Commands; use Illuminate\Console\Command; use Crater\Space\Updater; -use Crater\Setting; +use Crater\Models\Setting; // Implementation taken from Akaunting - https://github.com/akaunting/akaunting class UpdateCommand extends Command @@ -110,7 +110,7 @@ class UpdateCommand extends Command $this->info('Downloading update...'); try { - $path = Updater::download($this->version); + $path = Updater::download($this->version, 1); if (!is_string($path)) { $this->error('Download exception'); return false; diff --git a/app/Estimate.php b/app/Estimate.php deleted file mode 100644 index 24211795..00000000 --- a/app/Estimate.php +++ /dev/null @@ -1,237 +0,0 @@ - 'integer', - 'tax' => 'integer', - 'sub_total' => 'integer', - 'discount' => 'float', - 'discount_val' => 'integer', - ]; - - public static function getNextEstimateNumber($value) - { - // Get the last created order - $lastOrder = Estimate::where('estimate_number', 'LIKE', $value . '-%') - ->orderBy('created_at', 'desc') - ->first(); - - if (!$lastOrder) { - // We get here if there is no order at all - // If there is no number set it to 0, which will be 1 at the end. - $number = 0; - } else { - $number = explode("-",$lastOrder->estimate_number); - $number = $number[1]; - } - - // If we have ORD000001 in the database then we only want the number - // So the substr returns this 000001 - - // Add the string in front and higher up the number. - // the %05d part makes sure that there are always 6 numbers in the string. - // so it adds the missing zero's when needed. - - return sprintf('%06d', intval($number) + 1); - } - - public function items() - { - return $this->hasMany('Crater\EstimateItem'); - } - - public function user() - { - return $this->belongsTo('Crater\User'); - } - - public function taxes() - { - return $this->hasMany(Tax::class); - } - - public function estimateTemplate() - { - return $this->belongsTo('Crater\EstimateTemplate'); - } - - public function getEstimateNumAttribute() - { - $position = $this->strposX($this->estimate_number, "-", 1) + 1; - return substr($this->estimate_number, $position); - } - - public function getEstimatePrefixAttribute() - { - $prefix = explode("-",$this->estimate_number)[0]; - return $prefix; - } - - private function strposX($haystack, $needle, $number) - { - if ($number == '1') { - return strpos($haystack, $needle); - } elseif ($number > '1') { - return strpos( - $haystack, - $needle, - $this->strposX($haystack, $needle, $number - 1) + strlen($needle) - ); - } else { - return error_log('Error: Value for parameter $number is out of range'); - } - } - - public function getFormattedExpiryDateAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->expiry_date)->format($dateFormat); - } - - public function getFormattedEstimateDateAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->estimate_date)->format($dateFormat); - } - - public function scopeEstimatesBetween($query, $start, $end) - { - return $query->whereBetween( - 'estimates.estimate_date', - [$start->format('Y-m-d'), $end->format('Y-m-d')] - ); - } - - public function scopeWhereStatus($query, $status) - { - return $query->where('estimates.status', $status); - } - - public function scopeWhereEstimateNumber($query, $estimateNumber) - { - return $query->where('estimates.estimate_number', $estimateNumber); - } - - public function scopeWhereSearch($query, $search) - { - foreach (explode(' ', $search) as $term) { - $query->whereHas('user', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%') - ->orWhere('contact_name', 'LIKE', '%'.$term.'%') - ->orWhere('company_name', 'LIKE', '%'.$term.'%'); - }); - } - } - - public function scopeApplyFilters($query, array $filters) - { - $filters = collect($filters); - - if ($filters->get('search')) { - $query->whereSearch($filters->get('search')); - } - - if ($filters->get('estimate_number')) { - $query->whereEstimateNumber($filters->get('estimate_number')); - } - - if ($filters->get('status')) { - $query->whereStatus($filters->get('status')); - } - - if ($filters->get('from_date') && $filters->get('to_date')) { - $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); - $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); - $query->estimatesBetween($start, $end); - } - - if ($filters->get('customer_id')) { - $query->whereCustomer($filters->get('customer_id')); - } - - if ($filters->get('orderByField') || $filters->get('orderBy')) { - $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'estimate_number'; - $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; - $query->whereOrder($field, $orderBy); - } - } - - public function scopeWhereOrder($query, $orderByField, $orderBy) - { - $query->orderBy($orderByField, $orderBy); - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('estimates.company_id', $company_id); - } - - public function scopeWhereCustomer($query, $customer_id) - { - $query->where('estimates.user_id', $customer_id); - } - - public static function deleteEstimate($id) - { - $estimate = Estimate::find($id); - - if ($estimate->items()->exists()) { - $estimate->items()->delete(); - } - - if ($estimate->taxes()->exists()) { - $estimate->taxes()->delete(); - } - - $estimate->delete(); - - return true; - } -} diff --git a/app/Events/UpdateFinished.php b/app/Events/UpdateFinished.php index 6b19f5b8..3650f0c7 100644 --- a/app/Events/UpdateFinished.php +++ b/app/Events/UpdateFinished.php @@ -2,13 +2,7 @@ namespace Crater\Events; -use Illuminate\Broadcasting\Channel; -use Illuminate\Broadcasting\InteractsWithSockets; -use Illuminate\Broadcasting\PresenceChannel; -use Illuminate\Broadcasting\PrivateChannel; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; -use Illuminate\Foundation\Events\Dispatchable; -use Illuminate\Queue\SerializesModels; +use Illuminate\Foundation\Events\Dispatchable; class UpdateFinished { diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index a6100392..36f67319 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -1,7 +1,7 @@ hasMany(Expense::class); - } - - public function getFormattedCreatedAtAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->created_at)->format($dateFormat); - } - - public function getAmountAttribute() - { - return $this->expenses()->sum('amount'); - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('company_id', $company_id); - } -} diff --git a/app/Generators/CustomPathGenerator.php b/app/Generators/CustomPathGenerator.php new file mode 100644 index 00000000..03a012fd --- /dev/null +++ b/app/Generators/CustomPathGenerator.php @@ -0,0 +1,50 @@ +getBasePath($media) . '/'; + } + + public function getPathForConversions(Media $media): string + { + return $this->getBasePath($media) . '/conversations/'; + } + + public function getPathForResponsiveImages(Media $media): string + { + return $this->getBasePath($media) . '/responsive-images/'; + } + + /* + * Get a unique base path for the given media. + */ + protected function getBasePath(Media $media): string + { + $folderName = null; + + if ($media->model_type == Invoice::class) { + $folderName = 'Invoices'; + } elseif ($media->model_type == Estimate::class) { + $folderName = 'Estimates'; + } elseif ($media->model_type == Payment::class) { + $folderName = 'Payments'; + } else { + $folderName = $media->getKey(); + } + + return $folderName; + } +} diff --git a/app/Http/Controllers/AppVersionController.php b/app/Http/Controllers/AppVersionController.php new file mode 100644 index 00000000..5c4bad0e --- /dev/null +++ b/app/Http/Controllers/AppVersionController.php @@ -0,0 +1,24 @@ +json([ + 'version' => $version, + ]); + } +} diff --git a/app/Http/Controllers/Auth/AccessTokensController.php b/app/Http/Controllers/Auth/AccessTokensController.php deleted file mode 100644 index e89c03c4..00000000 --- a/app/Http/Controllers/Auth/AccessTokensController.php +++ /dev/null @@ -1,194 +0,0 @@ -middleware('api')->except(['store', 'update']); - $this->proxy = $proxy; - } - - /** - * Get the login username to be used by the controller. - * - * @return string - */ - public function username() - { - return 'email'; - } - - /** - * Generate a new access token. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $request->validate([ - 'username' => 'required|email', - 'password' => 'required|string|min:8', - ]); - - if ($this->hasTooManyLoginAttempts($request)) { - $this->fireLockoutEvent($request); - - return $this->sendLockoutResponse($request); - } - - return $this->requestPasswordGrant($request); - } - - /** - * Refresh an access token. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function update(Request $request) - { - $token = $request->cookie('refresh_token'); - - if (!$token) { - throw ValidationException::withMessages([ - 'refresh_token' => trans('oauth.missing_refresh_token') - ]); - } - - $response = $this->proxy->postJson('oauth/token', [ - 'client_id' => config('auth.proxy.client_id'), - 'client_secret' => config('auth.proxy.client_secret'), - 'grant_type' => 'refresh_token', - 'refresh_token' => $token, - 'scopes' => '[*]', - ]); - - if ($response->isSuccessful()) { - return $this->sendSuccessResponse($response); - } - - return response($response->getContent(), $response->getStatusCode()); - } - - /** - * Get the guard to be used during authentication. - * - * @return \Illuminate\Contracts\Auth\StatefulGuard - */ - protected function guard() - { - return Auth::guard('api'); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy(Request $request) - { - $accessToken = Auth::user()->token(); - - \DB::table('oauth_refresh_tokens') - ->where('access_token_id', $accessToken->id) - ->update([ - 'revoked' => true - ]); - - $accessToken->revoke(); - - return response()->json(null, 200); - } - - /** - * Create a new access token from a password grant client. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function requestPasswordGrant(Request $request) - { - $response = $this->proxy->postJson('oauth/token', [ - 'client_id' => config('auth.proxy.client_id'), - 'client_secret' => config('auth.proxy.client_secret'), - 'grant_type' => config('auth.proxy.grant_type'), - 'username' => $request->username, - 'password' => $request->password, - 'scopes' => '[*]' - ]); - - $user = User::where('email', $request->username)->first(); - - if ($response->isSuccessful()) { - $this->clearLoginAttempts($request); - return $this->sendSuccessResponse($response, $user); - } - - $this->incrementLoginAttempts($request); - - return response($response->getContent(), $response->getStatusCode()); - } - - /** - * Return a successful response for requesting an api token. - * - * @param \Illuminate\Http\Response $response - * @return \Illuminate\Http\Response - */ - public function sendSuccessResponse(Response $response, $user) - { - $data = json_decode($response->getContent()); - - $content = [ - 'access_token' => $data->access_token, - 'expires_in' => $data->expires_in, - ]; - - return response($content, $response->getStatusCode())->cookie( - 'refresh_token', - $data->refresh_token, - 10 * 24 * 60, - "", - "", - true, - true - ); - } - - public function isRegistered(Request $request) - { - if (User::whereEmail($request->email)->first()) { - return 'true'; - } else { - return 'false'; - } - } -} diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php deleted file mode 100644 index 95a98aec..00000000 --- a/app/Http/Controllers/CompanyController.php +++ /dev/null @@ -1,369 +0,0 @@ -email)->first(); - - $user = auth()->user(); - - if ($verifyEmail) { - if ($verifyEmail->id !== $user->id) { - return response()->json([ - 'error' => 'Email already in use' - ]); - } - } - - $user->name = $request->name; - $user->email = $request->email; - - if ($request->has('password')) { - $user->password = bcrypt($request->password); - } - - $user->save(); - - return response()->json([ - 'user' => $user, - 'success' => true - ]); - } - - - - /** - * Get Admin Account alongside the country from the addresses table and - * The company from companies table - * - * @return \Illuminate\Http\JsonResponse - */ - public function getAdminCompany() - { - $user = User::with(['addresses', 'addresses.country', 'company'])->find(1); - - return response()->json([ - 'user' => $user - ]); - } - - - - /** - * Update Admin Company Details - * @param \Crater\Http\Requests\CompanyRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function updateAdminCompany(CompanyRequest $request) - { - $user = User::find(1); - $company = $user->company; - $company->name = $request->name; - $company->save(); - - if ($request->has('logo')) { - $company->clearMediaCollection('logo'); - $company->addMediaFromRequest('logo')->toMediaCollection('logo'); - } - - $fields = $request->only(['address_street_1', 'address_street_2', 'city', 'state', 'country_id', 'zip', 'phone']); - $address = Address::updateOrCreate(['user_id' => 1], $fields); - $user = User::with(['addresses', 'addresses.country', 'company'])->find(1); - - return response()->json([ - 'user' => $user, - 'success' => true - ]); - } - - /** - * Retrieve General App Settings - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function getGeneralSettings(Request $request) - { - $date_formats = DateFormatter::get_list(); - - $time_zones = TimeZones::get_list(); - $fiscal_years = [ - ['key' => 'january-december' , 'value' => '1-12'], - ['key' => 'february-january' , 'value' => '2-1'], - ['key' => 'march-february' , 'value' => '3-2'], - ['key' => 'april-march' , 'value' => '4-3'], - ['key' => 'may-april' , 'value' => '5-4'], - ['key' => 'june-may' , 'value' => '6-5'], - ['key' => 'july-june' , 'value' => '7-6'], - ['key' => 'august-july' , 'value' => '8-7'], - ['key' => 'september-august' , 'value' => '9-8'], - ['key' => 'october-september', 'value' => '10-9'], - ['key' => 'november-october' , 'value' => '11-10'], - ['key' => 'december-november', 'value' => '12-11'], - ]; - - $language = CompanySetting::getSetting('language', $request->header('company')); - $carbon_date_format = CompanySetting::getSetting('carbon_date_format', $request->header('company')); - $moment_date_format = CompanySetting::getSetting('moment_date_format', $request->header('company')); - $time_zone = CompanySetting::getSetting('time_zone', $request->header('company')); - $currency = CompanySetting::getSetting('currency', $request->header('company')); - $fiscal_year = CompanySetting::getSetting('fiscal_year', $request->header('company')); - - $languages = [ // alphabetical order - ["code"=>"pt_BR", "name" => "Brazilian Portuguese"], - ["code"=>"en", "name" => "English"], - ["code"=>"nl", "name" => "Dutch"], - ["code"=>"fr", "name" => "French"], - ["code"=>"de", "name" => "German"], - ["code"=>"it", "name" => "Italian"], - ["code"=>"es", "name" => "Spanish"], - ["code"=>"ar", "name" => "العربية"], - ]; - - return response()->json([ - 'languages' => $languages, - 'date_formats' => $date_formats, - 'time_zones' => $time_zones, - 'time_zone' => $time_zone, - 'currencies' => Currency::all(), - 'fiscal_years' => $fiscal_years, - 'fiscal_year' => $fiscal_year, - 'selectedLanguage' => $language, - 'selectedCurrency' => $currency, - 'carbon_date_format' => $carbon_date_format, - 'moment_date_format' => $moment_date_format, - ]); - } - - - - /** - * Update General App Settings - * @param \Crater\Http\Requests\CompanySettingRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function updateGeneralSettings(CompanySettingRequest $request) - { - $sets = [ - 'currency', - 'time_zone', - 'language', - 'carbon_date_format', - 'fiscal_year', - 'moment_date_format' - ]; - - foreach ($sets as $key) { - CompanySetting::setSetting($key, $request->$key, $request->header('company')); - } - - return response()->json([ - 'success' => true - ]); - } - - public function getCustomizeSetting (Request $request) - { - $invoice_prefix = CompanySetting::getSetting('invoice_prefix', $request->header('company')); - $invoice_auto_generate = CompanySetting::getSetting('invoice_auto_generate', $request->header('company')); - - $estimate_prefix = CompanySetting::getSetting('estimate_prefix', $request->header('company')); - $estimate_auto_generate = CompanySetting::getSetting('estimate_auto_generate', $request->header('company')); - - $payment_prefix = CompanySetting::getSetting('payment_prefix', $request->header('company')); - $payment_auto_generate = CompanySetting::getSetting('payment_auto_generate', $request->header('company')); - - return response()->json([ - 'invoice_prefix' => $invoice_prefix, - 'invoice_auto_generate' => $invoice_auto_generate, - 'estimate_prefix' => $estimate_prefix, - 'estimate_auto_generate' => $estimate_auto_generate, - 'payment_prefix' => $payment_prefix, - 'payment_auto_generate' => $payment_auto_generate, - ]); - } - - public function updateCustomizeSetting (Request $request) - { - $sets = []; - - if ($request->type == "PAYMENTS") { - $sets = [ - 'payment_prefix' - ]; - } - - if ($request->type == "INVOICES") { - $sets = [ - 'invoice_prefix', - ]; - } - - if ($request->type == "ESTIMATES") { - $sets = [ - 'estimate_prefix', - ]; - } - - foreach ($sets as $key) { - CompanySetting::setSetting($key, $request->$key, $request->header('company')); - } - - return response()->json([ - 'success' => true - ]); - } - - /** - * Update a specific Company Setting - * @param \Crater\Http\Requests\SettingRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function updateSetting(SettingRequest $request) - { - CompanySetting::setSetting($request->key, $request->value, $request->header('company')); - - return response()->json([ - 'success' => true - ]); - } - - /** - * Retrieve Specific Company Setting - * @param \Crater\Http\Requests\SettingKeyRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function getSetting(SettingKeyRequest $request) - { - $setting = CompanySetting::getSetting($request->key, $request->header('company')); - - return response()->json([ - $request->key => $setting - ]); - } - - - /** - * Retrieve App Colors - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function getColors(Request $request) - { - $colors = [ - 'invoice_primary_color', - 'invoice_column_heading', - 'invoice_field_label', - 'invoice_field_value', - 'invoice_body_text', - 'invoice_description_text', - 'invoice_border_color', - 'primary_text_color', - 'heading_text_color', - 'section_heading_text_color', - 'border_color', - 'body_text_color', - 'footer_text_color', - 'footer_total_color', - 'footer_bg_color', - 'date_text_color' - ]; - - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($request->header('company')) - ->get(); - - return response()->json([ - 'colorSettings' => $colorSettings - ]); - } - - /** - * Upload the company logo to storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function uploadCompanyLogo(Request $request) - { - $data = json_decode($request->company_logo); - - if($data) { - $company = Company::find($request->header('company')); - - if($company) { - $company->clearMediaCollection('logo'); - - $company->addMediaFromBase64($data->data) - ->usingFileName($data->name) - ->toMediaCollection('logo'); - } - } - - return response()->json([ - 'success' => true - ]); - } - - /** - * Upload the Admin Avatar to public storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function uploadAdminAvatar(Request $request) - { - $data = json_decode($request->admin_avatar); - - if($data) { - $user = auth()->user(); - - if($user) { - $user->clearMediaCollection('admin_avatar'); - - $user->addMediaFromBase64($data->data) - ->usingFileName($data->name) - ->toMediaCollection('admin_avatar'); - } - } - - return response()->json([ - 'user' => $user, - 'success' => true - ]); - } -} diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php deleted file mode 100644 index a22cc6f2..00000000 --- a/app/Http/Controllers/CustomersController.php +++ /dev/null @@ -1,238 +0,0 @@ -has('limit') ? $request->limit : 10; - - $customers = User::customer() - ->applyFilters($request->only([ - 'search', - 'contact_name', - 'display_name', - 'phone', - 'orderByField', - 'orderBy' - ])) - ->whereCompany($request->header('company')) - ->select('users.*', - DB::raw('sum(invoices.due_amount) as due_amount') - ) - ->groupBy('users.id') - ->leftJoin('invoices', 'users.id', '=', 'invoices.user_id') - ->paginate($limit); - - $siteData = [ - 'customers' => $customers - ]; - - return response()->json($siteData); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function store(Requests\CustomerRequest $request) - { - $verifyEmail = User::where('email', $request->email)->first(); - - - $customer = new User(); - $customer->name = $request->name; - $customer->currency_id = $request->currency_id; - $customer->company_id = $request->header('company'); - $customer->email = $request->email; - $customer->phone = $request->phone; - $customer->company_name = $request->company_name; - $customer->contact_name = $request->contact_name; - $customer->website = $request->website; - $customer->enable_portal = $request->enable_portal; - $customer->role = 'customer'; - $customer->password = Hash::make($request->password); - $customer->save(); - - if ($request->addresses) { - foreach ($request->addresses as $address) { - $newAddress = new Address(); - $newAddress->name = $address["name"]; - $newAddress->address_street_1 = $address["address_street_1"]; - $newAddress->address_street_2 = $address["address_street_2"]; - $newAddress->city = $address["city"]; - $newAddress->state = $address["state"]; - $newAddress->country_id = $address["country_id"]; - $newAddress->zip = $address["zip"]; - $newAddress->phone = $address["phone"]; - $newAddress->type = $address["type"]; - $newAddress->user_id = $customer->id; - $newAddress->save(); - $customer->addresses()->save($newAddress); - } - } - - $customer = User::with('billingAddress', 'shippingAddress')->find($customer->id); - - return response()->json([ - 'customer' => $customer, - 'success' => true - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function show($id) - { - $customer = User::with([ - 'billingAddress', - 'shippingAddress', - 'billingAddress.country', - 'shippingAddress.country', - ])->find($id); - - return response()->json([ - 'customer' => $customer - ]); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function edit($id) - { - $customer = User::with('billingAddress', 'shippingAddress')->findOrFail($id); - $currency = $customer->currency; - $currencies = Currency::all(); - - return response()->json([ - 'customer' => $customer, - 'currencies' => $currencies, - 'currency' => $currency - ]); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function update($id, Requests\CustomerRequest $request) - { - $customer = User::find($id); - - if ($request->email != null) { - $verifyEmail = User::where('email', $request->email)->first(); - - if ($verifyEmail) { - if ($verifyEmail->id !== $customer->id) { - return response()->json([ - 'success' => false, - 'error' => 'Email already in use' - ]); - } - } - } - - if ($request->has('password')) { - $customer->password = Hash::make($request->password); - } - - $customer->name = $request->name; - $customer->currency_id = $request->currency_id; - $customer->email = $request->email; - $customer->phone = $request->phone; - $customer->company_name = $request->company_name; - $customer->contact_name = $request->contact_name; - $customer->website = $request->website; - $customer->enable_portal = $request->enable_portal; - $customer->save(); - - $customer->addresses()->delete(); - if ($request->addresses) { - foreach ($request->addresses as $address) { - $newAddress = $customer->addresses()->firstOrNew(['type' => $address["type"]]); - $newAddress->name = $address["name"]; - $newAddress->address_street_1 = $address["address_street_1"]; - $newAddress->address_street_2 = $address["address_street_2"]; - $newAddress->city = $address["city"]; - $newAddress->state = $address["state"]; - $newAddress->country_id = $address["country_id"]; - $newAddress->zip = $address["zip"]; - $newAddress->phone = $address["phone"]; - $newAddress->type = $address["type"]; - $newAddress->user_id = $customer->id; - $newAddress->save(); - } - } - - $customer = User::with('billingAddress', 'shippingAddress')->find($customer->id); - - return response()->json([ - 'customer' => $customer, - 'success' => true - ]); - } - - /** - * Remove the specified Customer along side all his/her resources (ie. Estimates, Invoices, Payments and Addresses) - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function destroy($id) - { - User::deleteCustomer($id); - - return response()->json([ - 'success' => true - ]); - } - - - /** - * Remove a list of Customers along side all their resources (ie. Estimates, Invoices, Payments and Addresses) - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function delete(Request $request) - { - foreach ($request->id as $id) { - User::deleteCustomer($id); - } - - return response()->json([ - 'success' => true - ]); - } -} diff --git a/app/Http/Controllers/EstimatesController.php b/app/Http/Controllers/EstimatesController.php deleted file mode 100644 index 95233410..00000000 --- a/app/Http/Controllers/EstimatesController.php +++ /dev/null @@ -1,479 +0,0 @@ -has('limit') ? $request->limit : 10; - - $estimates = Estimate::with([ - 'items', - 'user', - 'estimateTemplate', - 'taxes' - ]) - ->join('users', 'users.id', '=', 'estimates.user_id') - ->applyFilters($request->only([ - 'status', - 'customer_id', - 'estimate_number', - 'from_date', - 'to_date', - 'search', - 'orderByField', - 'orderBy' - ])) - ->whereCompany($request->header('company')) - ->select('estimates.*', 'users.name') - ->latest() - ->paginate($limit); - - $siteData = [ - 'estimates' => $estimates, - 'estimateTotalCount' => Estimate::count() - ]; - - return response()->json($siteData); - } - - public function create(Request $request) - { - $estimate_prefix = CompanySetting::getSetting('estimate_prefix', $request->header('company')); - $estimate_num_auto_generate = CompanySetting::getSetting('estimate_auto_generate', $request->header('company')); - - $nextEstimateNumberAttribute = null; - $nextEstimateNumber = Estimate::getNextEstimateNumber($estimate_prefix); - - if ($estimate_num_auto_generate == "YES") { - $nextEstimateNumberAttribute = $nextEstimateNumber; - } - - $tax_per_item = CompanySetting::getSetting('tax_per_item', $request->header('company')); - $discount_per_item = CompanySetting::getSetting('discount_per_item', $request->header('company')); - $customers = User::where('role', 'customer')->get(); - - return response()->json([ - 'customers' => $customers, - 'nextEstimateNumberAttribute' => $nextEstimateNumberAttribute, - 'nextEstimateNumber' => $estimate_prefix.'-'.$nextEstimateNumber, - 'taxes' => Tax::whereCompany($request->header('company'))->latest()->get(), - 'items' => Item::whereCompany($request->header('company'))->get(), - 'tax_per_item' => $tax_per_item, - 'discount_per_item' => $discount_per_item, - 'estimateTemplates' => EstimateTemplate::all(), - 'shareable_link' => '', - 'estimate_prefix' => $estimate_prefix - ]); - } - - public function store(EstimatesRequest $request) - { - $estimate_number = explode("-",$request->estimate_number); - $number_attributes['estimate_number'] = $estimate_number[0].'-'.sprintf('%06d', intval($estimate_number[1])); - - Validator::make($number_attributes, [ - 'estimate_number' => 'required|unique:estimates,estimate_number' - ])->validate(); - - $estimate_date = Carbon::createFromFormat('d/m/Y', $request->estimate_date); - $expiry_date = Carbon::createFromFormat('d/m/Y', $request->expiry_date); - $status = Estimate::STATUS_DRAFT; - $tax_per_item = CompanySetting::getSetting( - 'tax_per_item', - $request->header('company') - ) ? CompanySetting::getSetting( - 'tax_per_item', - $request->header('company') - ) : 'NO'; - - if ($request->has('estimateSend')) { - $status = Estimate::STATUS_SENT; - } - - $discount_per_item = CompanySetting::getSetting( - 'discount_per_item', - $request->header('company') - ) ? CompanySetting::getSetting( - 'discount_per_item', - $request->header('company') - ) : 'NO'; - - $estimate = Estimate::create([ - 'estimate_date' => $estimate_date, - 'expiry_date' => $expiry_date, - 'estimate_number' => $number_attributes['estimate_number'], - 'reference_number' => $request->reference_number, - 'user_id' => $request->user_id, - 'company_id' => $request->header('company'), - 'estimate_template_id' => $request->estimate_template_id, - 'status' => $status, - 'discount' => $request->discount, - 'discount_type' => $request->discount_type, - 'discount_val' => $request->discount_val, - 'sub_total' => $request->sub_total, - 'total' => $request->total, - 'tax_per_item' => $tax_per_item, - 'discount_per_item' => $discount_per_item, - 'tax' => $request->tax, - 'notes' => $request->notes, - 'unique_hash' => str_random(60) - ]); - - $estimateItems = $request->items; - - foreach ($estimateItems as $estimateItem) { - $estimateItem['company_id'] = $request->header('company'); - $item = $estimate->items()->create($estimateItem); - - if (array_key_exists('taxes', $estimateItem) && $estimateItem['taxes']) { - foreach ($estimateItem['taxes'] as $tax) { - if (gettype($tax['amount']) !== "NULL") { - $tax['company_id'] = $request->header('company'); - $item->taxes()->create($tax); - } - } - } - } - - if ($request->has('taxes')) { - foreach ($request->taxes as $tax) { - if (gettype($tax['amount']) !== "NULL") { - $tax['company_id'] = $request->header('company'); - $estimate->taxes()->create($tax); - } - } - } - - if ($request->has('estimateSend')) { - $data['estimate'] = $estimate->toArray(); - $userId = $data['estimate']['user_id']; - $data['user'] = User::find($userId)->toArray(); - $data['company'] = Company::find($estimate->company_id); - $email = $data['user']['email']; - - if (!$email) { - return response()->json([ - 'error' => 'user_email_does_not_exist' - ]); - } - - \Mail::to($email)->send(new EstimatePdf($data)); - } - - $estimate = Estimate::with([ - 'items', - 'user', - 'estimateTemplate', - 'taxes' - ])->find($estimate->id); - - return response()->json([ - 'estimate' => $estimate, - 'url' => url('/estimates/pdf/'.$estimate->unique_hash), - ]); - } - - public function show(Request $request, $id) - { - $estimate = Estimate::with([ - 'items', - 'items.taxes', - 'user', - 'estimateTemplate', - 'taxes', - 'taxes.taxType' - ])->find($id); - - $siteData = [ - 'estimate' => $estimate, - 'shareable_link' => url('/estimates/pdf/'.$estimate->unique_hash) - ]; - - return response()->json($siteData); - } - - public function edit(Request $request,$id) - { - $estimate = Estimate::with([ - 'items', - 'items.taxes', - 'user', - 'estimateTemplate', - 'taxes', - 'taxes.taxType' - ])->find($id); - $customers = User::where('role', 'customer')->get(); - - return response()->json( [ - 'customers' => $customers, - 'nextEstimateNumber' => $estimate->getEstimateNumAttribute(), - 'taxes' => Tax::latest()->whereCompany($request->header('company'))->get(), - 'estimate' => $estimate, - 'items' => Item::whereCompany($request->header('company'))->latest()->get(), - 'estimateTemplates' => EstimateTemplate::all(), - 'tax_per_item' => $estimate->tax_per_item, - 'discount_per_item' => $estimate->discount_per_item, - 'shareable_link' => url('/estimates/pdf/'.$estimate->unique_hash), - 'estimate_prefix' => $estimate->getEstimatePrefixAttribute() - ]); - } - - public function update(EstimatesRequest $request, $id) - { - $estimate_number = explode("-",$request->estimate_number); - $number_attributes['estimate_number'] = $estimate_number[0].'-'.sprintf('%06d', intval($estimate_number[1])); - Validator::make($number_attributes, [ - 'estimate_number' => 'required|unique:estimates,estimate_number'.','.$id - ])->validate(); - - $estimate_date = Carbon::createFromFormat('d/m/Y', $request->estimate_date); - $expiry_date = Carbon::createFromFormat('d/m/Y', $request->expiry_date); - - $estimate = Estimate::find($id); - $estimate->estimate_date = $estimate_date; - $estimate->expiry_date = $expiry_date; - $estimate->estimate_number = $number_attributes['estimate_number']; - $estimate->reference_number = $request->reference_number; - $estimate->user_id = $request->user_id; - $estimate->estimate_template_id = $request->estimate_template_id; - $estimate->discount = $request->discount; - $estimate->discount_type = $request->discount_type; - $estimate->discount_val = $request->discount_val; - $estimate->sub_total = $request->sub_total; - $estimate->total = $request->total; - $estimate->tax = $request->tax; - $estimate->notes = $request->notes; - $estimate->save(); - - $oldItems = $estimate->items->toArray(); - $oldTaxes = $estimate->taxes->toArray(); - $estimateItems = $request->items; - - foreach ($oldItems as $oldItem) { - EstimateItem::destroy($oldItem['id']); - } - - foreach ($oldTaxes as $oldTax) { - Tax::destroy($oldTax['id']); - } - - foreach ($estimateItems as $estimateItem) { - $estimateItem['company_id'] = $request->header('company'); - $item = $estimate->items()->create($estimateItem); - - if (array_key_exists('taxes', $estimateItem) && $estimateItem['taxes']) { - foreach ($estimateItem['taxes'] as $tax) { - if (gettype($tax['amount']) !== "NULL") { - $tax['company_id'] = $request->header('company'); - $item->taxes()->create($tax); - } - } - } - } - - if ($request->has('taxes')) { - foreach ($request->taxes as $tax) { - if (gettype($tax['amount']) !== "NULL") { - $tax['company_id'] = $request->header('company'); - $estimate->taxes()->create($tax); - } - } - } - - $estimate = Estimate::with([ - 'items', - 'user', - 'estimateTemplate', - 'taxes' - ])->find($estimate->id); - - return response()->json([ - 'estimate' => $estimate, - 'url' => url('/estimates/pdf/'.$estimate->unique_hash), - ]); - } - - public function destroy($id) - { - Estimate::deleteEstimate($id); - - return response()->json([ - 'success' => true - ]); - } - - public function sendEstimate(Request $request) - { - $estimate = Estimate::findOrFail($request->id); - - $data['estimate'] = $estimate->toArray(); - $userId = $data['estimate']['user_id']; - $data['user'] = User::find($userId)->toArray(); - $data['company'] = Company::find($estimate->company_id); - - $email = $data['user']['email']; - - if (!$email) { - return response()->json([ - 'error' => 'user_email_does_not_exist' - ]); - } - - \Mail::to($email)->send(new EstimatePdf($data)); - - if ($estimate->status == Estimate::STATUS_DRAFT) { - $estimate->status = Estimate::STATUS_SENT; - $estimate->save(); - } - - return response()->json([ - 'success' => true - ]); - } - - public function markEstimateAccepted(Request $request) - { - $estimate = Estimate::find($request->id); - $estimate->status = Estimate::STATUS_ACCEPTED; - $estimate->save(); - - return response()->json([ - 'success' => true - ]); - } - - public function markEstimateRejected(Request $request) - { - $estimate = Estimate::find($request->id); - $estimate->status = Estimate::STATUS_REJECTED; - $estimate->save(); - - return response()->json([ - 'success' => true - ]); - } - - public function markEstimateSent(Request $request) - { - $estimate = Estimate::find($request->id); - $estimate->status = Estimate::STATUS_SENT; - $estimate->save(); - - return response()->json([ - 'success' => true - ]); - } - - public function estimateToInvoice(Request $request, $id) - { - $estimate = Estimate::with(['items', 'items.taxes', 'user', 'estimateTemplate', 'taxes'])->find($id); - $invoice_date = Carbon::now(); - $invoice_prefix = CompanySetting::getSetting( - 'invoice_prefix', - $request->header('company') - ); - $due_date = Carbon::now()->addDays(7); - $tax_per_item = CompanySetting::getSetting( - 'tax_per_item', - $request->header('company') - ) ? CompanySetting::getSetting( - 'tax_per_item', - $request->header('company') - ) : 'NO'; - $discount_per_item = CompanySetting::getSetting( - 'discount_per_item', - $request->header('company') - ) ? CompanySetting::getSetting( - 'discount_per_item', - $request->header('company') - ) : 'NO'; - - $invoice = Invoice::create([ - 'invoice_date' => $invoice_date, - 'due_date' => $due_date, - 'invoice_number' => $invoice_prefix."-".Invoice::getNextInvoiceNumber($invoice_prefix), - 'reference_number' => $estimate->reference_number, - 'user_id' => $estimate->user_id, - 'company_id' => $request->header('company'), - 'invoice_template_id' => 1, - 'status' => Invoice::STATUS_DRAFT, - 'paid_status' => Invoice::STATUS_UNPAID, - 'sub_total' => $estimate->sub_total, - 'discount' => $estimate->discount, - 'discount_type' => $estimate->discount_type, - 'discount_val' => $estimate->discount_val, - 'total' => $estimate->total, - 'due_amount' => $estimate->total, - 'tax_per_item' => $tax_per_item, - 'discount_per_item' => $discount_per_item, - 'tax' => $estimate->tax, - 'notes' => $estimate->notes, - 'unique_hash' => str_random(60) - ]); - - $invoiceItems = $estimate->items->toArray(); - - foreach ($invoiceItems as $invoiceItem) { - $invoiceItem['company_id'] = $request->header('company'); - $invoiceItem['name'] = $invoiceItem['name']; - $item = $invoice->items()->create($invoiceItem); - - if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { - foreach ($invoiceItem['taxes'] as $tax) { - $tax['company_id'] = $request->header('company'); - - if ($tax['amount']) { - $item->taxes()->create($tax); - } - } - } - } - - if ($estimate->taxes) { - foreach ($estimate->taxes->toArray() as $tax) { - $tax['company_id'] = $request->header('company'); - $invoice->taxes()->create($tax); - } - } - - $invoice = Invoice::with([ - 'items', - 'user', - 'invoiceTemplate', - 'taxes' - ])->find($invoice->id); - - return response()->json([ - 'invoice' => $invoice - ]); - } - - public function delete(Request $request) - { - foreach ($request->id as $id) { - Estimate::deleteEstimate($id); - } - - return response()->json([ - 'success' => true - ]); - } -} diff --git a/app/Http/Controllers/ExpensesController.php b/app/Http/Controllers/ExpensesController.php deleted file mode 100644 index 5a5dfbd7..00000000 --- a/app/Http/Controllers/ExpensesController.php +++ /dev/null @@ -1,282 +0,0 @@ -has('limit') ? $request->limit : 10; - - $expenses = Expense::with('category') - ->leftJoin('users', 'users.id', '=', 'expenses.user_id') - ->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id') - ->applyFilters($request->only([ - 'expense_category_id', - 'user_id', - 'search', - 'from_date', - 'to_date', - 'orderByField', - 'orderBy' - ])) - ->whereCompany($request->header('company')) - ->select('expenses.*', 'expense_categories.name', 'users.name as user_name') - ->paginate($limit); - - $customers = User::customer() - ->whereCompany($request->header('company')) - ->get(); - - return response()->json([ - 'expenses' => $expenses, - 'customers' => $customers, - 'currency' => Currency::findOrFail( - CompanySetting::getSetting('currency', $request->header('company')) - ) - ]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\JsonResponse - */ - public function create(Request $request) - { - $categories = ExpenseCategory::whereCompany($request->header('company'))->get(); - $customers = User::customer() - ->whereCompany($request->header('company')) - ->get(); - - return response()->json([ - 'categories' => $categories, - 'customers' => $customers - ]); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function store(ExpenseRequest $request) - { - $expense_date = Carbon::createFromFormat('d/m/Y', $request->expense_date); - - $expense = new Expense(); - $expense->notes = $request->notes; - $expense->expense_category_id = $request->expense_category_id; - $expense->user_id = $request->user_id; - $expense->amount = $request->amount; - $expense->company_id = $request->header('company'); - $expense->expense_date = $expense_date; - $expense->save(); - - if ($request->hasFile('attachment_receipt')) { - $expense->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local'); - } - - return response()->json([ - 'expense' => $expense, - 'success' => true - ]); - } - - /** - * Display the specified resource. - * - * @param \Crater\Expense $expense - * @return \Illuminate\Http\JsonResponse - */ - public function show(Expense $expense) - { - // - } - - /** - * Show the form for editing the specified resource. - * - * @param $id - * @return \Illuminate\Http\JsonResponse - */ - public function edit(Request $request, $id) - { - $categories = ExpenseCategory::whereCompany($request->header('company'))->get(); - $customers = User::customer() - ->whereCompany($request->header('company')) - ->get(); - $expense = Expense::with('category')->where('id', $id)->first(); - - return response()->json([ - 'categories' => $categories, - 'customers' => $customers, - 'expense' => $expense - ]); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param \Crater\Expense $expense - * @return \Illuminate\Http\JsonResponse - */ - public function update(ExpenseRequest $request, Expense $expense) - { - $expense_date = Carbon::createFromFormat('d/m/Y', $request->expense_date); - - $expense = Expense::findOrFail($expense->id); - $expense->notes = $request->notes; - $expense->expense_category_id = $request->expense_category_id; - $expense->amount = $request->amount; - $expense->user_id = $request->user_id; - $expense->expense_date = $expense_date; - $expense->save(); - - if ($request->hasFile('attachment_receipt')) { - $expense->clearMediaCollection('receipts'); - $expense->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local'); - } - - return response()->json([ - 'expense' => $expense, - 'success' => true - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param \Crater\Expense $expense - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Expense $expense) - { - $expense->delete(); - - return response()->json([ - 'success' => true - ]); - } - - public function delete(Request $request) - { - Expense::destroy($request->id); - - return response()->json([ - 'success' => true - ]); - } - - /** - * Upload the expense receipts to storage. - * - * @param \Illuminate\Http\Request $request - * @param $id - * @return \Illuminate\Http\JsonResponse - */ - public function uploadReceipts(Request $request, $id) - { - $data = json_decode($request->attachment_receipt); - - if ($data) { - $expense = Expense::find($id); - - if ($expense) { - if ($request->type === 'edit') { - $expense->clearMediaCollection('receipts'); - } - - $expense->addMediaFromBase64($data->data) - ->usingFileName($data->name) - ->toMediaCollection('receipts', 'local'); - } - } - - return response()->json([ - 'success' => 'Expense receipts uploaded successfully' - ]); - } - - - /** - * Retrive details of an expense receipt from storage. - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function showReceipt($id) - { - $expense = Expense::find($id); - $imagePath = null; - - if ($expense) { - $media = $expense->getFirstMedia('receipts'); - if ($media) { - $imagePath = $media->getPath(); - } else { - return response()->json([ - 'error' => 'receipt_does_not_exist' - ]); - } - } - - $type = \File::mimeType($imagePath); - - $image = 'data:' . $type . ';base64,' . base64_encode(file_get_contents($imagePath)); - - return response()->json([ - 'image' => $image, - 'type' => $type - ]); - } - - - - /** - * Download an expense receipt from storage. - * @param int $id - * @param strig $hash - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse | \Illuminate\Http\JsonResponse - */ - public function downloadReceipt($id, $hash) - { - $company = Company::where('unique_hash', $hash)->first(); - - $expense = Expense::whereCompany($company->id) - ->where('id', $id) - ->first(); - $imagePath = null; - - if ($expense) { - $media = $expense->getFirstMedia('receipts'); - if ($media) { - $imagePath = $media->getPath(); - $response = \Response::download($imagePath, $media->file_name); - ob_end_clean(); - return $response; - } - } - - return response()->json([ - 'error' => 'receipt_not_found' - ]); - } -} diff --git a/app/Http/Controllers/FrontendController.php b/app/Http/Controllers/FrontendController.php deleted file mode 100644 index 53f3f7b5..00000000 --- a/app/Http/Controllers/FrontendController.php +++ /dev/null @@ -1,410 +0,0 @@ -where('unique_hash', $id) - ->first(); - - $taxTypes = []; - $taxes = []; - $labels = []; - - if ($estimate->tax_per_item === 'YES') { - foreach ($estimate->items as $item) { - foreach ($item->taxes as $tax) { - if (!in_array($tax->name, $taxTypes)) { - array_push($taxTypes, $tax->name); - array_push($labels, $tax->name.' ('.$tax->percent.'%)'); - } - } - } - - foreach ($taxTypes as $taxType) { - $total = 0; - - foreach ($estimate->items as $item) { - foreach ($item->taxes as $tax) { - if($tax->name == $taxType) { - $total += $tax->amount; - } - } - } - - array_push($taxes, $total); - } - } - - $estimateTemplate = EstimateTemplate::find($estimate->estimate_template_id); - - $company = Company::find($estimate->company_id); - - $logo = $company->getMedia('logo')->first(); - - if($logo) { - $logo = $logo->getFullUrl(); - } - - if ($estimate && ($estimate->status == Estimate::STATUS_SENT || $estimate->status == Estimate::STATUS_DRAFT)) { - $estimate->status = Estimate::STATUS_VIEWED; - $estimate->save(); - $notifyEstimateViewed = CompanySetting::getSetting( - 'notify_estimate_viewed', - $estimate->company_id - ); - - if ($notifyEstimateViewed == 'YES') { - $data['estimate'] = Estimate::findOrFail($estimate->id)->toArray(); - $data['user'] = User::find($estimate->user_id)->toArray(); - $notificationEmail = CompanySetting::getSetting( - 'notification_email', - $estimate->company_id - ); - - \Mail::to($notificationEmail)->send(new EstimateViewed($data)); - } - } - - $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); - - $colors = [ - 'invoice_primary_color', - 'invoice_column_heading', - 'invoice_field_label', - 'invoice_field_value', - 'invoice_body_text', - 'invoice_description_text', - 'invoice_border_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($estimate->company_id) - ->get(); - - view()->share([ - 'estimate' => $estimate, - 'logo' => $logo ?? null, - 'company_address' => $companyAddress, - 'colors' => $colorSettings, - 'labels' => $labels, - 'taxes' => $taxes - ]); - $pdf = PDF::loadView('app.pdf.estimate.'.$estimateTemplate->view); - - return $pdf->stream(); - } - - - /** - * - * @return \Illuminate\Http\Response - */ - public function getCustomerInvoicePdf($id) - { - $invoice = Invoice::with([ - 'items', - 'items.taxes', - 'user', - 'invoiceTemplate', - 'taxes' - ]) - ->where('unique_hash', $id) - ->first(); - - $taxTypes = []; - $taxes = []; - $labels = []; - - if ($invoice->tax_per_item === 'YES') { - foreach ($invoice->items as $item) { - foreach ($item->taxes as $tax) { - if (!in_array($tax->name, $labels)) { - array_push($taxTypes, $tax->name); - array_push($labels, $tax->name.' ('.$tax->percent.'%)'); - } - } - } - - foreach ($taxTypes as $taxType) { - $total = 0; - - foreach ($invoice->items as $item) { - foreach ($item->taxes as $tax) { - if($tax->name == $taxType) { - $total += $tax->amount; - } - } - } - - array_push($taxes, $total); - } - } - - $invoiceTemplate = InvoiceTemplate::find($invoice->invoice_template_id); - - $company = Company::find($invoice->company_id); - $logo = $company->getMedia('logo')->first(); - - if($logo) { - $logo = $logo->getFullUrl(); - } - - if ($invoice && ($invoice->status == Invoice::STATUS_SENT || $invoice->status == Invoice::STATUS_DRAFT)) { - $invoice->status = Invoice::STATUS_VIEWED; - $invoice->viewed = true; - $invoice->save(); - $notifyInvoiceViewed = CompanySetting::getSetting( - 'notify_invoice_viewed', - $invoice->company_id - ); - - if ($notifyInvoiceViewed == 'YES') { - $data['invoice'] = Invoice::findOrFail($invoice->id)->toArray(); - $data['user'] = User::find($invoice->user_id)->toArray(); - $notificationEmail = CompanySetting::getSetting( - 'notification_email', - $invoice->company_id - ); - - \Mail::to($notificationEmail)->send(new InvoiceViewed($data)); - } - } - - $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); - - $colors = [ - 'invoice_primary_color', - 'invoice_column_heading', - 'invoice_field_label', - 'invoice_field_value', - 'invoice_body_text', - 'invoice_description_text', - 'invoice_border_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($invoice->company_id) - ->get(); - - view()->share([ - 'invoice' => $invoice, - 'colors' => $colorSettings, - 'company_address' => $companyAddress, - 'logo' => $logo ?? null, - 'labels' => $labels, - 'taxes' => $taxes - ]); - $pdf = PDF::loadView('app.pdf.invoice.'.$invoiceTemplate->view); - - return $pdf->stream(); - } - - public function getEstimatePdf($id) - { - $estimate = Estimate::with([ - 'items', - 'items.taxes', - 'user', - 'estimateTemplate', - 'taxes', - 'taxes.taxType' - ]) - ->where('unique_hash', $id) - ->first(); - - $taxTypes = []; - $taxes = []; - $labels = []; - - if ($estimate->tax_per_item === 'YES') { - foreach ($estimate->items as $item) { - foreach ($item->taxes as $tax) { - if (!in_array($tax->name, $taxTypes)) { - array_push($taxTypes, $tax->name); - array_push($labels, $tax->name.' ('.$tax->percent.'%)'); - } - } - } - - foreach ($taxTypes as $taxType) { - $total = 0; - - foreach ($estimate->items as $item) { - foreach ($item->taxes as $tax) { - if($tax->name == $taxType) { - $total += $tax->amount; - } - } - } - - array_push($taxes, $total); - } - } - - $estimateTemplate = EstimateTemplate::find($estimate->estimate_template_id); - - $company = Company::find($estimate->company_id); - $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); - $logo = $company->getMedia('logo')->first(); - - if($logo) { - $logo = $logo->getFullUrl(); - } - - $colors = [ - 'invoice_primary_color', - 'invoice_column_heading', - 'invoice_field_label', - 'invoice_field_value', - 'invoice_body_text', - 'invoice_description_text', - 'invoice_border_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($estimate->company_id) - ->get(); - - view()->share([ - 'estimate' => $estimate, - 'logo' => $logo ?? null, - 'company_address' => $companyAddress, - 'colors' => $colorSettings, - 'labels' => $labels, - 'taxes' => $taxes - ]); - $pdf = PDF::loadView('app.pdf.estimate.'.$estimateTemplate->view); - - return $pdf->stream(); - } - - public function getInvoicePdf($id) - { - $invoice = Invoice::with([ - 'items', - 'items.taxes', - 'user', - 'invoiceTemplate', - 'taxes' - ]) - ->where('unique_hash', $id) - ->first(); - - $taxTypes = []; - $taxes = []; - $labels = []; - - if ($invoice->tax_per_item === 'YES') { - foreach ($invoice->items as $item) { - foreach ($item->taxes as $tax) { - if (!in_array($tax->name, $taxTypes)) { - array_push($taxTypes, $tax->name); - array_push($labels, $tax->name.' ('.$tax->percent.'%)'); - } - } - } - - foreach ($taxTypes as $taxType) { - $total = 0; - - foreach ($invoice->items as $item) { - foreach ($item->taxes as $tax) { - if($tax->name == $taxType) { - $total += $tax->amount; - } - } - } - - array_push($taxes, $total); - } - } - - $invoiceTemplate = InvoiceTemplate::find($invoice->invoice_template_id); - $company = Company::find($invoice->company_id); - $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); - - $logo = $company->getMedia('logo')->first(); - - if($logo) { - $logo = $logo->getFullUrl(); - } - - $colors = [ - 'invoice_primary_color', - 'invoice_column_heading', - 'invoice_field_label', - 'invoice_field_value', - 'invoice_body_text', - 'invoice_description_text', - 'invoice_border_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($invoice->company_id) - ->get(); - - view()->share([ - 'invoice' => $invoice, - 'company_address' => $companyAddress, - 'logo' => $logo ?? null, - 'colors' => $colorSettings, - 'labels' => $labels, - 'taxes' => $taxes - ]); - $pdf = PDF::loadView('app.pdf.invoice.'.$invoiceTemplate->view); - - return $pdf->stream(); - } - - public function getPaymentPdf($id) - { - $payment = Payment::with([ - 'user', - 'invoice', - 'paymentMethod' - ]) - ->where('unique_hash', $id) - ->first(); - - $company = Company::find($payment->company_id); - $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); - - $logo = $company->getMedia('logo')->first(); - - if($logo) { - $logo = $logo->getFullUrl(); - } - - view()->share([ - 'payment' => $payment, - 'company_address' => $companyAddress, - 'logo' => $logo ?? null - ]); - - $pdf = PDF::loadView('app.pdf.payment.payment'); - - return $pdf->stream(); - } -} diff --git a/app/Http/Controllers/InvoicesController.php b/app/Http/Controllers/InvoicesController.php deleted file mode 100644 index 3e0d8a03..00000000 --- a/app/Http/Controllers/InvoicesController.php +++ /dev/null @@ -1,569 +0,0 @@ -has('limit') ? $request->limit : 10; - - $invoices = Invoice::with(['items', 'user', 'invoiceTemplate', 'taxes']) - ->join('users', 'users.id', '=', 'invoices.user_id') - ->applyFilters($request->only([ - 'status', - 'paid_status', - 'customer_id', - 'invoice_number', - 'from_date', - 'to_date', - 'orderByField', - 'orderBy', - 'search', - ])) - ->whereCompany($request->header('company')) - ->select('invoices.*', 'users.name') - ->latest() - ->paginate($limit); - - return response()->json([ - 'invoices' => $invoices, - 'invoiceTotalCount' => Invoice::count() - ]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\JsonResponse - */ - public function create(Request $request) - { - $tax_per_item = CompanySetting::getSetting('tax_per_item', $request->header('company')); - $discount_per_item = CompanySetting::getSetting('discount_per_item', $request->header('company')); - $invoice_prefix = CompanySetting::getSetting('invoice_prefix', $request->header('company')); - $invoice_num_auto_generate = CompanySetting::getSetting('invoice_auto_generate', $request->header('company')); - - $nextInvoiceNumberAttribute = null; - $nextInvoiceNumber = Invoice::getNextInvoiceNumber($invoice_prefix); - - if ($invoice_num_auto_generate == "YES") { - $nextInvoiceNumberAttribute = $nextInvoiceNumber; - } - - return response()->json([ - 'nextInvoiceNumberAttribute' => $nextInvoiceNumberAttribute, - 'nextInvoiceNumber' => $invoice_prefix.'-'.$nextInvoiceNumber, - 'items' => Item::with('taxes')->whereCompany($request->header('company'))->get(), - 'invoiceTemplates' => InvoiceTemplate::all(), - 'tax_per_item' => $tax_per_item, - 'discount_per_item' => $discount_per_item, - 'invoice_prefix' => $invoice_prefix - ]); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function store(Requests\InvoicesRequest $request) - { - $invoice_number = explode("-",$request->invoice_number); - $number_attributes['invoice_number'] = $invoice_number[0].'-'.sprintf('%06d', intval($invoice_number[1])); - - Validator::make($number_attributes, [ - 'invoice_number' => 'required|unique:invoices,invoice_number' - ])->validate(); - - $invoice_date = Carbon::createFromFormat('d/m/Y', $request->invoice_date); - $due_date = Carbon::createFromFormat('d/m/Y', $request->due_date); - $status = Invoice::STATUS_DRAFT; - - $tax_per_item = CompanySetting::getSetting('tax_per_item', $request->header('company')) ?? 'NO'; - $discount_per_item = CompanySetting::getSetting('discount_per_item', $request->header('company')) ?? 'NO'; - - if ($request->has('invoiceSend')) { - $status = Invoice::STATUS_SENT; - } - - $invoice = Invoice::create([ - 'invoice_date' => $invoice_date, - 'due_date' => $due_date, - 'invoice_number' => $number_attributes['invoice_number'], - 'reference_number' => $request->reference_number, - 'user_id' => $request->user_id, - 'company_id' => $request->header('company'), - 'invoice_template_id' => $request->invoice_template_id, - 'status' => $status, - 'paid_status' => Invoice::STATUS_UNPAID, - 'sub_total' => $request->sub_total, - 'discount' => $request->discount, - 'discount_type' => $request->discount_type, - 'discount_val' => $request->discount_val, - 'total' => $request->total, - 'due_amount' => $request->total, - 'tax_per_item' => $tax_per_item, - 'discount_per_item' => $discount_per_item, - 'tax' => $request->tax, - 'notes' => $request->notes, - 'unique_hash' => str_random(60) - ]); - - $invoiceItems = $request->items; - - foreach ($invoiceItems as $invoiceItem) { - $invoiceItem['company_id'] = $request->header('company'); - $item = $invoice->items()->create($invoiceItem); - - if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { - foreach ($invoiceItem['taxes'] as $tax) { - $tax['company_id'] = $request->header('company'); - if (gettype($tax['amount']) !== "NULL") { - $item->taxes()->create($tax); - } - } - } - } - - if ($request->has('taxes')) { - foreach ($request->taxes as $tax) { - $tax['company_id'] = $request->header('company'); - - if (gettype($tax['amount']) !== "NULL") { - $invoice->taxes()->create($tax); - } - } - } - - if ($request->has('invoiceSend')) { - $data['invoice'] = Invoice::findOrFail($invoice->id)->toArray(); - $data['user'] = User::find($request->user_id)->toArray(); - $data['company'] = Company::find($invoice->company_id); - - $email = $data['user']['email']; - - if (!$email) { - return response()->json([ - 'error' => 'user_email_does_not_exist' - ]); - } - - \Mail::to($email)->send(new InvoicePdf($data)); - } - - $invoice = Invoice::with(['items', 'user', 'invoiceTemplate', 'taxes'])->find($invoice->id); - - return response()->json([ - 'url' => url('/invoices/pdf/'.$invoice->unique_hash), - 'invoice' => $invoice - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function show(Request $request, $id) - { - $invoice = Invoice::with([ - 'items', - 'items.taxes', - 'user', - 'invoiceTemplate', - 'taxes.taxType' - ])->find($id); - - $siteData = [ - 'invoice' => $invoice, - 'shareable_link' => url('/invoices/pdf/' . $invoice->unique_hash) - ]; - - return response()->json($siteData); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function edit(Request $request,$id) - { - $invoice = Invoice::with([ - 'items', - 'items.taxes', - 'user', - 'invoiceTemplate', - 'taxes.taxType' - ])->find($id); - - return response()->json([ - 'nextInvoiceNumber' => $invoice->getInvoiceNumAttribute(), - 'invoice' => $invoice, - 'invoiceTemplates' => InvoiceTemplate::all(), - 'tax_per_item' => $invoice->tax_per_item, - 'discount_per_item' => $invoice->discount_per_item, - 'shareable_link' => url('/invoices/pdf/'.$invoice->unique_hash), - 'invoice_prefix' => $invoice->getInvoicePrefixAttribute() - ]); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function update(Requests\InvoicesRequest $request, $id) - { - $invoice_number = explode("-",$request->invoice_number); - $number_attributes['invoice_number'] = $invoice_number[0].'-'.sprintf('%06d', intval($invoice_number[1])); - - Validator::make($number_attributes, [ - 'invoice_number' => 'required|unique:invoices,invoice_number'.','.$id - ])->validate(); - - $invoice_date = Carbon::createFromFormat('d/m/Y', $request->invoice_date); - $due_date = Carbon::createFromFormat('d/m/Y', $request->due_date); - - $invoice = Invoice::find($id); - $oldAmount = $invoice->total; - - if ($oldAmount != $request->total) { - $oldAmount = (int)round($request->total) - (int)$oldAmount; - } else { - $oldAmount = 0; - } - - $invoice->due_amount = ($invoice->due_amount + $oldAmount); - - if ($invoice->due_amount == 0 && $invoice->paid_status != Invoice::STATUS_PAID) { - $invoice->status = Invoice::STATUS_COMPLETED; - $invoice->paid_status = Invoice::STATUS_PAID; - } elseif ($invoice->due_amount < 0 && $invoice->paid_status != Invoice::STATUS_UNPAID) { - return response()->json([ - 'error' => 'invalid_due_amount' - ]); - } elseif ($invoice->due_amount != 0 && $invoice->paid_status == Invoice::STATUS_PAID) { - $invoice->status = $invoice->getPreviousStatus(); - $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; - } - - $invoice->invoice_date = $invoice_date; - $invoice->due_date = $due_date; - $invoice->invoice_number = $number_attributes['invoice_number']; - $invoice->reference_number = $request->reference_number; - $invoice->user_id = $request->user_id; - $invoice->invoice_template_id = $request->invoice_template_id; - $invoice->sub_total = $request->sub_total; - $invoice->total = $request->total; - $invoice->discount = $request->discount; - $invoice->discount_type = $request->discount_type; - $invoice->discount_val = $request->discount_val; - $invoice->tax = $request->tax; - $invoice->notes = $request->notes; - $invoice->save(); - - $oldItems = $invoice->items->toArray(); - $oldTaxes = $invoice->taxes->toArray(); - $invoiceItems = $request->items; - - foreach ($oldItems as $oldItem) { - InvoiceItem::destroy($oldItem['id']); - } - - foreach ($oldTaxes as $oldTax) { - Tax::destroy($oldTax['id']); - } - foreach ($invoiceItems as $invoiceItem) { - $invoiceItem['company_id'] = $request->header('company'); - $item = $invoice->items()->create($invoiceItem); - - if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { - foreach ($invoiceItem['taxes'] as $tax) { - $tax['company_id'] = $request->header('company'); - if (gettype($tax['amount']) !== "NULL") { - $item->taxes()->create($tax); - } - } - } - } - - if ($request->has('taxes')) { - foreach ($request->taxes as $tax) { - $tax['company_id'] = $request->header('company'); - - if (gettype($tax['amount']) !== "NULL") { - $invoice->taxes()->create($tax); - } - } - } - - $invoice = Invoice::with(['items', 'user', 'invoiceTemplate', 'taxes'])->find($invoice->id); - - return response()->json([ - 'url' => url('/invoices/pdf/' . $invoice->unique_hash), - 'invoice' => $invoice, - 'success' => true - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function destroy($id) - { - $invoice = Invoice::find($id); - - if ($invoice->payments()->exists() && $invoice->payments()->count() > 0) { - return response()->json([ - 'error' => 'payment_attached' - ]); - } - - $invoice = Invoice::destroy($id); - - return response()->json([ - 'success' => true - ]); - } - - public function delete(Request $request) - { - foreach ($request->id as $id) { - $invoice = Invoice::find($id); - - if ($invoice->payments()->exists() && $invoice->payments()->count() > 0) { - return response()->json([ - 'error' => 'payment_attached' - ]); - } - } - - $invoice = Invoice::destroy($request->id); - - return response()->json([ - 'success' => true - ]); - } - - - - /** - * Mail a specific invoice to the correponding cusitomer's email address. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function sendInvoice(Request $request) - { - $invoice = Invoice::findOrFail($request->id); - - $data['invoice'] = $invoice->toArray(); - $userId = $data['invoice']['user_id']; - $data['user'] = User::find($userId)->toArray(); - $data['company'] = Company::find($invoice->company_id); - $email = $data['user']['email']; - - if (!$email) { - return response()->json([ - 'error' => 'user_email_does_not_exist' - ]); - } - - \Mail::to($email)->send(new InvoicePdf($data)); - - if ($invoice->status == Invoice::STATUS_DRAFT) { - $invoice->status = Invoice::STATUS_SENT; - $invoice->sent = true; - $invoice->save(); - } - - - return response()->json([ - 'success' => true - ]); - } - - - /** - * Mark a specific invoice as sent. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function markAsSent(Request $request) - { - $invoice = Invoice::findOrFail($request->id); - $invoice->status = Invoice::STATUS_SENT; - $invoice->sent = true; - $invoice->save(); - - return response()->json([ - 'success' => true - ]); - } - - - /** - * Mark a specific invoice as paid. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function markAsPaid(Request $request) - { - $invoice = Invoice::findOrFail($request->id); - $invoice->status = Invoice::STATUS_COMPLETED; - $invoice->paid_status = Invoice::STATUS_PAID; - $invoice->due_amount = 0; - $invoice->save(); - - return response()->json([ - 'success' => true - ]); - } - - - /** - * Retrive a specified user's unpaid invoices from storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function getCustomersUnpaidInvoices(Request $request, $id) - { - $invoices = Invoice::where('paid_status', '<>', Invoice::STATUS_PAID) - ->where('user_id', $id)->where('due_amount', '>', 0) - ->whereCompany($request->header('company')) - ->get(); - - return response()->json([ - 'invoices' => $invoices - ]); - } - - public function cloneInvoice(Request $request) - { - $oldInvoice = Invoice::with([ - 'items.taxes', - 'user', - 'invoiceTemplate', - 'taxes.taxType' - ]) - ->find($request->id); - - $date = Carbon::now(); - $invoice_prefix = CompanySetting::getSetting( - 'invoice_prefix', - $request->header('company') - ); - $tax_per_item = CompanySetting::getSetting( - 'tax_per_item', - $request->header('company') - ) ? CompanySetting::getSetting( - 'tax_per_item', - $request->header('company') - ) : 'NO'; - $discount_per_item = CompanySetting::getSetting( - 'discount_per_item', - $request->header('company') - ) ? CompanySetting::getSetting( - 'discount_per_item', - $request->header('company') - ) : 'NO'; - - $invoice = Invoice::create([ - 'invoice_date' => $date, - 'due_date' => $date, - 'invoice_number' => $invoice_prefix."-".Invoice::getNextInvoiceNumber($invoice_prefix), - 'reference_number' => $oldInvoice->reference_number, - 'user_id' => $oldInvoice->user_id, - 'company_id' => $request->header('company'), - 'invoice_template_id' => 1, - 'status' => Invoice::STATUS_DRAFT, - 'paid_status' => Invoice::STATUS_UNPAID, - 'sub_total' => $oldInvoice->sub_total, - 'discount' => $oldInvoice->discount, - 'discount_type' => $oldInvoice->discount_type, - 'discount_val' => $oldInvoice->discount_val, - 'total' => $oldInvoice->total, - 'due_amount' => $oldInvoice->total, - 'tax_per_item' => $oldInvoice->tax_per_item, - 'discount_per_item' => $oldInvoice->discount_per_item, - 'tax' => $oldInvoice->tax, - 'notes' => $oldInvoice->notes, - 'unique_hash' => str_random(60) - ]); - - $invoiceItems = $oldInvoice->items->toArray(); - - foreach ($invoiceItems as $invoiceItem) { - $invoiceItem['company_id'] = $request->header('company'); - $invoiceItem['name'] = $invoiceItem['name']; - $item = $invoice->items()->create($invoiceItem); - - if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { - foreach ($invoiceItem['taxes'] as $tax) { - $tax['company_id'] = $request->header('company'); - - if ($tax['amount']) { - $item->taxes()->create($tax); - } - } - } - } - - if ($oldInvoice->taxes) { - foreach ($oldInvoice->taxes->toArray() as $tax) { - $tax['company_id'] = $request->header('company'); - $invoice->taxes()->create($tax); - } - } - - $invoice = Invoice::with([ - 'items', - 'user', - 'invoiceTemplate', - 'taxes' - ])->find($invoice->id); - - return response()->json([ - 'invoice' => $invoice - ]); - } -} diff --git a/app/Http/Controllers/ItemsController.php b/app/Http/Controllers/ItemsController.php deleted file mode 100644 index e83dcc13..00000000 --- a/app/Http/Controllers/ItemsController.php +++ /dev/null @@ -1,166 +0,0 @@ -has('limit') ? $request->limit : 10; - - $items = Item::with(['taxes']) - ->leftJoin('units', 'units.id', '=', 'items.unit_id') - ->applyFilters($request->only([ - 'search', - 'price', - 'unit_id', - 'orderByField', - 'orderBy' - ])) - ->whereCompany($request->header('company')) - ->select('items.*', 'units.name as unit_name') - ->latest() - ->paginate($limit); - - return response()->json([ - 'items' => $items, - 'taxTypes' => TaxType::latest()->get() - ]); - } - - public function edit(Request $request, $id) - { - $item = Item::with(['taxes', 'unit'])->find($id); - - return response()->json([ - 'item' => $item, - 'taxes' => Tax::whereCompany($request->header('company')) - ->latest() - ->get() - ]); - } - - - /** - * Create Item. - * - * @param Crater\Http\Requests\ItemsRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function store(Requests\ItemsRequest $request) - { - $item = new Item(); - $item->name = $request->name; - $item->unit_id = $request->unit_id; - $item->description = $request->description; - $item->company_id = $request->header('company'); - $item->price = $request->price; - $item->save(); - - if ($request->has('taxes')) { - foreach ($request->taxes as $tax) { - $tax['company_id'] = $request->header('company'); - $item->taxes()->create($tax); - } - } - - $item = Item::with('taxes')->find($item->id); - - return response()->json([ - 'item' => $item - ]); - } - - /** - * Update an existing Item. - * - * @param Crater\Http\Requests\ItemsRequest $request - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function update(Requests\ItemsRequest $request, $id) - { - $item = Item::find($id); - $item->name = $request->name; - $item->unit_id = $request->unit_id; - $item->description = $request->description; - $item->price = $request->price; - $item->save(); - - $oldTaxes = $item->taxes->toArray(); - - foreach ($oldTaxes as $oldTax) { - Tax::destroy($oldTax['id']); - } - - if ($request->has('taxes')) { - foreach ($request->taxes as $tax) { - $tax['company_id'] = $request->header('company'); - $item->taxes()->create($tax); - } - } - - $item = Item::with('taxes')->find($item->id); - - return response()->json([ - 'item' => $item - ]); - } - - - /** - * Delete an existing Item. - * - * @param int $id - * @return \Illuminate\Http\JsonResponse - */ - public function destroy($id) - { - $data = Item::deleteItem($id); - - if (!$data) { - return response()->json([ - 'error' => 'item_attached' - ]); - } - - return response()->json([ - 'success' => $data - ]); - } - - - - /** - * Delete a list of existing Items. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function delete(Request $request) - { - $items = []; - foreach ($request->id as $id) { - $item = Item::deleteItem($id); - if ($item) { - array_push($items, $id); - } - } - - if (empty($items)) { - return response()->json([ - 'success' => true - ]); - } - - return response()->json([ - 'items' => $items - ]); - } -} diff --git a/app/Http/Controllers/LocationController.php b/app/Http/Controllers/LocationController.php deleted file mode 100644 index 5f295cc4..00000000 --- a/app/Http/Controllers/LocationController.php +++ /dev/null @@ -1,21 +0,0 @@ -json([ - 'countries' => Country::all() - ]); - } -} diff --git a/app/Http/Controllers/OnboardingController.php b/app/Http/Controllers/OnboardingController.php deleted file mode 100644 index cbd9c7f8..00000000 --- a/app/Http/Controllers/OnboardingController.php +++ /dev/null @@ -1,337 +0,0 @@ -has('database_created')) { - return response()->json([ - 'profile_complete' => '0' - ]); - } - - $setting = Setting::getSetting('profile_complete'); - - if ($setting !== 'COMPLETED' && $setting < 4){ - return response()->json([ - 'profile_complete' => $setting - ]); - } - - $date_formats = DateFormatter::get_list(); - $time_zones = TimeZones::get_list(); - $languages = [ - ["code"=>"ar", "name" => "Arabic"], - ["code"=>"en", "name" => "English"], - ["code"=>"fr", "name" => "French"], - ["code"=>"es", "name" => "Spanish"], - ["code"=>"ar", "name" => "العربية"], - ["code"=>"de", "name" => "German"], - ["code"=>"pt-br", "name" => "Portuguese (Brazilian)"], - ["code"=>"it", "name" => "Italian"], - ]; - $fiscal_years = [ - ['key' => 'january-december' , 'value' => '1-12'], - ['key' => 'february-january' , 'value' => '2-1'], - ['key' => 'march-february' , 'value' => '3-2'], - ['key' => 'april-march' , 'value' => '4-3'], - ['key' => 'may-april' , 'value' => '5-4'], - ['key' => 'june-may' , 'value' => '6-5'], - ['key' => 'july-june' , 'value' => '7-6'], - ['key' => 'august-july' , 'value' => '8-7'], - ['key' => 'september-august' , 'value' => '9-8'], - ['key' => 'october-september', 'value' => '10-9'], - ['key' => 'november-october' , 'value' => '11-10'], - ['key' => 'december-november', 'value' => '12-11'], - ]; - $user = User::with([ - 'addresses', - 'addresses.country', - 'company' - ])->find(1); - - return response()->json([ - 'user' => $user, - 'profile_complete' => $setting, - 'languages' => $languages, - 'date_formats' => $date_formats, - 'time_zones' => $time_zones, - 'fiscal_years' => $fiscal_years, - 'currencies' => Currency::all() - ]); - } - - - /** - * Setup Admin Profile. - * - * @param \Crater\Http\Requests\ProfileRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function adminProfile(ProfileRequest $request) - { - $setting = Setting::getSetting('profile_complete'); - - if ($setting == '1' || $setting == 'COMPLETED') { - return response()->json(['error' => 'Profile already created.']); - } else { - Setting::setSetting('profile_complete', 5); - } - - $user = User::find(1); - $user->name = $request->name; - $user->email = $request->email; - - if ($request->has('password')) { - $user->password = bcrypt($request->password); - } - - $user->save(); - - return response()->json([ - 'user' => $user - ]); - } - - /** - * Setup Admin Avatar. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function uploadAdminAvatar(Request $request) - { - $setting = Setting::getSetting('profile_complete'); - - if ($setting == '1' || $setting == 'COMPLETED') { - return response()->json(['error' => 'Profile already created.']); - } - $data = json_decode($request->admin_avatar); - - if($data) { - $user = User::find($data->id); - if($user) { - $user->clearMediaCollection('admin_avatar'); - - $user->addMediaFromBase64($data->data) - ->usingFileName($data->name) - ->toMediaCollection('admin_avatar'); - } - } - - return response()->json([ - 'user' => $user, - 'success' => true - ]); - } - - /** - * Setup Admin Company. - * - * @param \Crater\Http\Requests\CompanyRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function adminCompany(CompanyRequest $request) - { - $setting = Setting::getSetting('profile_complete'); - - if ($setting == '6' || $setting == 'COMPLETED') { - return response()->json(['error' => 'Company already created.']); - } else { - Setting::setSetting('profile_complete', 6); - } - - $user = User::find(1); - $company = $user->company; - - if (!$company) { - $company = new Company(); - } - - $company->name = $request->name; - $company->unique_hash = str_random(60); - $company->save(); - $user->company()->associate($company); - $user->save(); - - if ($request->has('logo') && $request->logo !== null && $request->logo !== 'undefined' ) { - $company->addMediaFromRequest('logo')->toMediaCollection('logo'); - - } - - $fields = $request->only([ - 'address_street_1', - 'address_street_2', - 'city', - 'state', - 'country_id', - 'zip', - 'phone' - ]); - $address = Address::updateOrCreate(['user_id' => 1], $fields); - $user = User::with('addresses', 'company')->find(1); - - CompanySetting::setSetting( - 'notification_email', - $user->email, - $company->id - ); - - return response()->json([ - 'user' => $user - ]); - } - - - /** - * Setup Company Settings. - * - * @param \Crater\Http\Requests\CompanySettingRequest $request - * @return \Illuminate\Http\JsonResponse - */ - public function companySettings(CompanySettingRequest $request) - { - $setting = Setting::getSetting('profile_complete'); - - if($setting == 'COMPLETED') { - return response()->json(['error' => 'Settings already saved.']); - } else { - Setting::setSetting('profile_complete', 'COMPLETED'); - } - - $user = User::find(1); - - $sets = ['currency', - 'time_zone', - 'language', - 'carbon_date_format', - 'moment_date_format', - 'fiscal_year' - ]; - - foreach ($sets as $key) { - CompanySetting::setSetting( - $key, - $request->$key, - $user->company_id - ); - } - - $invoices = [ - 'invoice_auto_generate' => 'YES', - 'invoice_prefix' => 'INV' - ]; - - foreach ($invoices as $key => $value) { - CompanySetting::setSetting( - $key, - $value, - $user->company_id - ); - } - - $estimates = [ - 'estimate_prefix' => 'EST', - 'estimate_auto_generate' => 'YES' - ]; - - foreach ($estimates as $key => $value) { - CompanySetting::setSetting( - $key, - $value, - $user->company_id - ); - } - - $payments = [ - 'payment_prefix' => 'PAY', - 'payment_auto_generate' => 'YES' - ]; - - foreach ($payments as $key => $value) { - CompanySetting::setSetting( - $key, - $value, - $user->company_id - ); - } - - $colors = [ - 'primary_text_color' => '#5851D8', - 'heading_text_color' => '#595959', - 'section_heading_text_color' => '#040405', - 'border_color' => '#EAF1FB', - 'body_text_color' => '#595959', - 'footer_text_color' => '#595959', - 'footer_total_color' => '#5851D8', - 'footer_bg_color' => '#F9FBFF', - 'date_text_color' => '#A5ACC1', - 'invoice_primary_color' => '#5851D8', - 'invoice_column_heading' => '#55547A', - 'invoice_field_label' => '#55547A', - 'invoice_field_value' => '#040405', - 'invoice_body_text' => '#040405', - 'invoice_description_text' => '#595959', - 'invoice_border_color' => '#EAF1FB' - ]; - foreach ($colors as $key => $value) { - CompanySetting::setSetting( - $key, - $value, - $user->company_id - ); - } - - Setting::setSetting('version', config('crater.version')); - - Artisan::call('passport:install --force'); - - Artisan::call('db:seed', ['--class' => 'PaymentMethodSeeder', '--force' => true]); - - Artisan::call('db:seed', ['--class' => 'UnitSeeder', '--force' => true]); - - $client = DB::table('oauth_clients')->find(2); - - $path = base_path('.env'); - - if (file_exists($path)) { - file_put_contents($path, str_replace( - 'PROXY_OAUTH_CLIENT_SECRET='.config('auth.proxy.client_secret'), - 'PROXY_OAUTH_CLIENT_SECRET='.$client->secret, - file_get_contents($path) - )); - file_put_contents($path, str_replace( - 'APP_DEBUG=true', - 'APP_DEBUG=false', - file_get_contents($path) - )); - } - - $data['token'] = $user->createToken('password')->accessToken; - - return response()->json($data); - } -} diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php deleted file mode 100644 index a323ea05..00000000 --- a/app/Http/Controllers/PaymentController.php +++ /dev/null @@ -1,321 +0,0 @@ -has('limit') ? $request->limit : 10; - - $payments = Payment::with(['user', 'invoice', 'paymentMethod']) - ->join('users', 'users.id', '=', 'payments.user_id') - ->leftJoin('invoices', 'invoices.id', '=', 'payments.invoice_id') - ->leftJoin('payment_methods', 'payment_methods.id', '=', 'payments.payment_method_id') - ->applyFilters($request->only([ - 'search', - 'payment_number', - 'payment_method_id', - 'customer_id', - 'orderByField', - 'orderBy' - ])) - ->whereCompany($request->header('company')) - ->select('payments.*', 'users.name', 'invoices.invoice_number', 'payment_methods.name as payment_mode') - ->latest() - ->paginate($limit); - - return response()->json([ - 'payments' => $payments - ]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create(Request $request) - { - $payment_prefix = CompanySetting::getSetting('payment_prefix', $request->header('company')); - $payment_num_auto_generate = CompanySetting::getSetting('payment_auto_generate', $request->header('company')); - - - $nextPaymentNumberAttribute = null; - $nextPaymentNumber = Payment::getNextPaymentNumber($payment_prefix); - - if ($payment_num_auto_generate == "YES") { - $nextPaymentNumberAttribute = $nextPaymentNumber; - } - - return response()->json([ - 'customers' => User::where('role', 'customer') - ->whereCompany($request->header('company')) - ->get(), - 'paymentMethods' => PaymentMethod::whereCompany($request->header('company')) - ->latest() - ->get(), - 'nextPaymentNumberAttribute' => $nextPaymentNumberAttribute, - 'nextPaymentNumber' => $payment_prefix.'-'.$nextPaymentNumber, - 'payment_prefix' => $payment_prefix - ]); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(PaymentRequest $request) - { - $payment_number = explode("-",$request->payment_number); - $number_attributes['payment_number'] = $payment_number[0].'-'.sprintf('%06d', intval($payment_number[1])); - - Validator::make($number_attributes, [ - 'payment_number' => 'required|unique:payments,payment_number' - ])->validate(); - - $payment_date = Carbon::createFromFormat('d/m/Y', $request->payment_date); - - if ($request->has('invoice_id') && $request->invoice_id != null) { - $invoice = Invoice::find($request->invoice_id); - if ($invoice && $invoice->due_amount == $request->amount) { - $invoice->status = Invoice::STATUS_COMPLETED; - $invoice->paid_status = Invoice::STATUS_PAID; - $invoice->due_amount = 0; - } elseif ($invoice && $invoice->due_amount != $request->amount) { - $invoice->due_amount = (int)$invoice->due_amount - (int)$request->amount; - if ($invoice->due_amount < 0) { - return response()->json([ - 'error' => 'invalid_amount' - ]); - } - $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; - } - $invoice->save(); - } - - $payment = Payment::create([ - 'payment_date' => $payment_date, - 'payment_number' => $number_attributes['payment_number'], - 'user_id' => $request->user_id, - 'company_id' => $request->header('company'), - 'invoice_id' => $request->invoice_id, - 'payment_method_id' => $request->payment_method_id, - 'amount' => $request->amount, - 'notes' => $request->notes, - 'unique_hash' => str_random(60) - ]); - - return response()->json([ - 'payment' => $payment, - 'shareable_link' => url('/payments/pdf/'.$payment->unique_hash), - 'success' => true - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - $payment = Payment::with(['user', 'invoice', 'paymentMethod'])->find($id); - - return response()->json([ - 'payment' => $payment, - 'shareable_link' => url('/payments/pdf/'.$payment->unique_hash) - ]); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit(Request $request, $id) - { - $payment = Payment::with(['user', 'invoice', 'paymentMethod'])->find($id); - - $invoices = Invoice::where('paid_status', '<>', Invoice::STATUS_PAID) - ->where('user_id', $payment->user_id)->where('due_amount', '>', 0) - ->whereCompany($request->header('company')) - ->get(); - - return response()->json([ - 'customers' => User::where('role', 'customer') - ->whereCompany($request->header('company')) - ->get(), - 'paymentMethods' => PaymentMethod::whereCompany($request->header('company')) - ->latest() - ->get(), - 'nextPaymentNumber' => $payment->getPaymentNumAttribute(), - 'payment_prefix' => $payment->getPaymentPrefixAttribute(), - 'shareable_link' => url('/payments/pdf/'.$payment->unique_hash), - 'payment' => $payment, - 'invoices' => $invoices - ]); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(PaymentRequest $request, $id) - { - $payment_number = explode("-",$request->payment_number); - $number_attributes['payment_number'] = $payment_number[0].'-'.sprintf('%06d', intval($payment_number[1])); - - Validator::make($number_attributes, [ - 'payment_number' => 'required|unique:payments,payment_number'.','.$id - ])->validate(); - - $payment_date = Carbon::createFromFormat('d/m/Y', $request->payment_date); - - $payment = Payment::find($id); - $oldAmount = $payment->amount; - - if ($request->has('invoice_id') && $request->invoice_id && ($oldAmount != $request->amount)) { - $amount = (int)$request->amount - (int)$oldAmount; - $invoice = Invoice::find($request->invoice_id); - $invoice->due_amount = (int)$invoice->due_amount - (int)$amount; - - if ($invoice->due_amount < 0) { - return response()->json([ - 'error' => 'invalid_amount' - ]); - } - - if ($invoice->due_amount == 0) { - $invoice->status = Invoice::STATUS_COMPLETED; - $invoice->paid_status = Invoice::STATUS_PAID; - } else { - $invoice->status = $invoice->getPreviousStatus(); - $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; - } - - $invoice->save(); - } - - $payment->payment_date = $payment_date; - $payment->payment_number = $number_attributes['payment_number']; - $payment->user_id = $request->user_id; - $payment->invoice_id = $request->invoice_id; - $payment->payment_method_id = $request->payment_method_id; - $payment->amount = $request->amount; - $payment->notes = $request->notes; - $payment->save(); - - return response()->json([ - 'payment' => $payment, - 'shareable_link' => url('/payments/pdf/'.$payment->unique_hash), - 'success' => true - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - $payment = Payment::find($id); - - if ($payment->invoice_id != null) { - $invoice = Invoice::find($payment->invoice_id); - $invoice->due_amount = ((int)$invoice->due_amount + (int)$payment->amount); - - if ($invoice->due_amount == $invoice->total) { - $invoice->paid_status = Invoice::STATUS_UNPAID; - } else { - $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; - } - - $invoice->status = $invoice->getPreviousStatus(); - $invoice->save(); - } - - $payment->delete(); - - return response()->json([ - 'success' => true - ]); - } - - public function delete(Request $request) - { - foreach ($request->id as $id) { - $payment = Payment::find($id); - - if ($payment->invoice_id != null) { - $invoice = Invoice::find($payment->invoice_id); - $invoice->due_amount = ((int)$invoice->due_amount + (int)$payment->amount); - - if ($invoice->due_amount == $invoice->total) { - $invoice->paid_status = Invoice::STATUS_UNPAID; - } else { - $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; - } - - $invoice->status = $invoice->getPreviousStatus(); - $invoice->save(); - } - - $payment->delete(); - } - - return response()->json([ - 'success' => true - ]); - } - - public function sendPayment(Request $request) - { - $payment = Payment::findOrFail($request->id); - - $data['payment'] = $payment->toArray(); - $userId = $data['payment']['user_id']; - $data['user'] = User::find($userId)->toArray(); - $data['company'] = Company::find($payment->company_id); - $email = $data['user']['email']; - - if (!$email) { - return response()->json([ - 'error' => 'user_email_does_not_exist' - ]); - } - - \Mail::to($email)->send(new PaymentPdf($data)); - - return response()->json([ - 'success' => true - ]); - } -} diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php deleted file mode 100644 index cafaf44a..00000000 --- a/app/Http/Controllers/ReportController.php +++ /dev/null @@ -1,293 +0,0 @@ -first(); - - $start = Carbon::createFromFormat('d/m/Y', $request->from_date); - $end = Carbon::createFromFormat('d/m/Y', $request->to_date); - - $customers = User::with(['invoices' => function ($query) use ($start, $end) { - $query->whereBetween( - 'invoice_date', - [$start->format('Y-m-d'), $end->format('Y-m-d')] - ); - }]) - ->customer() - ->whereCompany($company->id) - ->applyInvoiceFilters($request->only(['from_date', 'to_date'])) - ->get(); - - $totalAmount = 0; - foreach ($customers as $customer) { - $customerTotalAmount = 0; - foreach ($customer->invoices as $invoice) { - $customerTotalAmount += $invoice->total; - } - $customer->totalAmount = $customerTotalAmount; - $totalAmount += $customerTotalAmount; - } - - $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); - $from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat); - $to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat); - - $colors = [ - 'primary_text_color', - 'heading_text_color', - 'section_heading_text_color', - 'border_color', - 'body_text_color', - 'footer_text_color', - 'footer_total_color', - 'footer_bg_color', - 'date_text_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($company->id) - ->get(); - - view()->share([ - 'customers' => $customers, - 'totalAmount' => $totalAmount, - 'colorSettings' => $colorSettings, - 'company' => $company, - 'from_date' => $from_date, - 'to_date' => $to_date - ]); - $pdf = PDF::loadView('app.pdf.reports.sales-customers'); - - if ($request->has('download')) { - return $pdf->download(); - } - - return $pdf->stream(); - } - - public function itemsSalesReport($hash, Request $request) - { - $company = Company::where('unique_hash', $hash)->first(); - - $items = InvoiceItem::whereCompany($company->id) - ->applyInvoiceFilters($request->only(['from_date', 'to_date'])) - ->itemAttributes() - ->get(); - - $totalAmount = 0; - foreach ($items as $item) { - $totalAmount += $item->total_amount; - } - - $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); - $from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat); - $to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat); - - $colors = [ - 'primary_text_color', - 'heading_text_color', - 'section_heading_text_color', - 'border_color', - 'body_text_color', - 'footer_text_color', - 'footer_total_color', - 'footer_bg_color', - 'date_text_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($company->id) - ->get(); - - view()->share([ - 'items' => $items, - 'colorSettings' => $colorSettings, - 'totalAmount' => $totalAmount, - 'company' => $company, - 'from_date' => $from_date, - 'to_date' => $to_date - ]); - $pdf = PDF::loadView('app.pdf.reports.sales-items'); - - if ($request->has('download')) { - return $pdf->download(); - } - - return $pdf->stream(); - } - - public function expensesReport($hash, Request $request) - { - $company = Company::where('unique_hash', $hash)->first(); - - $expenseCategories = Expense::with('category') - ->whereCompany($company->id) - ->applyFilters($request->only(['from_date', 'to_date'])) - ->expensesAttributes() - ->get(); - - $totalAmount = 0; - foreach ($expenseCategories as $category) { - $totalAmount += $category->total_amount; - } - - $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); - $from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat); - $to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat); - - $colors = [ - 'primary_text_color', - 'heading_text_color', - 'section_heading_text_color', - 'border_color', - 'body_text_color', - 'footer_text_color', - 'footer_total_color', - 'footer_bg_color', - 'date_text_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($company->id) - ->get(); - - view()->share([ - 'expenseCategories' => $expenseCategories, - 'colorSettings' => $colorSettings, - 'totalExpense' => $totalAmount, - 'company' => $company, - 'from_date' => $from_date, - 'to_date' => $to_date - ]); - $pdf = PDF::loadView('app.pdf.reports.expenses'); - - if ($request->has('download')) { - return $pdf->download(); - } - - return $pdf->stream(); - } - - public function taxSummery($hash, Request $request) - { - $company = Company::where('unique_hash', $hash)->first(); - - $taxTypes = Tax::with('taxType', 'invoice', 'invoiceItem') - ->whereCompany($company->id) - ->whereInvoicesFilters($request->only(['from_date', 'to_date'])) - ->taxAttributes() - ->get(); - - $totalAmount = 0; - foreach ($taxTypes as $taxType) { - $totalAmount += $taxType->total_tax_amount; - } - - $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); - $from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat); - $to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat); - - $colors = [ - 'primary_text_color', - 'heading_text_color', - 'section_heading_text_color', - 'border_color', - 'body_text_color', - 'footer_text_color', - 'footer_total_color', - 'footer_bg_color', - 'date_text_color' - ]; - - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($company->id) - ->get(); - - view()->share([ - 'taxTypes' => $taxTypes, - 'totalTaxAmount' => $totalAmount, - 'colorSettings' => $colorSettings, - 'company' => $company, - 'from_date' => $from_date, - 'to_date' => $to_date - ]); - - $pdf = PDF::loadView('app.pdf.reports.tax-summary'); - - if ($request->has('download')) { - return $pdf->download(); - } - - return $pdf->stream(); - } - - public function profitLossReport($hash, Request $request) - { - $company = Company::where('unique_hash', $hash)->first(); - - $invoicesAmount = Invoice::whereCompany($company->id) - ->applyFilters($request->only(['from_date', 'to_date'])) - ->wherePaidStatus(Invoice::STATUS_PAID) - ->sum('total'); - - $expenseCategories = Expense::with('category') - ->whereCompany($company->id) - ->applyFilters($request->only(['from_date', 'to_date'])) - ->expensesAttributes() - ->get(); - - $totalAmount = 0; - foreach ($expenseCategories as $category) { - $totalAmount += $category->total_amount; - } - - $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); - $from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat); - $to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat); - - $colors = [ - 'primary_text_color', - 'heading_text_color', - 'section_heading_text_color', - 'border_color', - 'body_text_color', - 'footer_text_color', - 'footer_total_color', - 'footer_bg_color', - 'date_text_color' - ]; - $colorSettings = CompanySetting::whereIn('option', $colors) - ->whereCompany($company->id) - ->get(); - - view()->share([ - 'company' => $company, - 'income' => $invoicesAmount, - 'expenseCategories' => $expenseCategories, - 'totalExpense' => $totalAmount, - 'colorSettings' => $colorSettings, - 'company' => $company, - 'from_date' => $from_date, - 'to_date' => $to_date - ]); - $pdf = PDF::loadView('app.pdf.reports.profit-loss'); - - if ($request->has('download')) { - return $pdf->download(); - } - - return $pdf->stream(); - } -} diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php deleted file mode 100644 index 9910ab13..00000000 --- a/app/Http/Controllers/SettingsController.php +++ /dev/null @@ -1,42 +0,0 @@ -json([ - 'version' => $version, - ]); - } - - public function testEmailConfig(Request $request) - { - $this->validate($request, [ - 'to' => 'required|email', - 'subject' => 'required', - 'message' => 'required' - ]); - - Mail::to($request->to)->send(new TestMail($request->subject, $request->message)); - - return response()->json([ - 'success' => true - ]); - } -} diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php deleted file mode 100644 index e5c3e7f4..00000000 --- a/app/Http/Controllers/UsersController.php +++ /dev/null @@ -1,86 +0,0 @@ -header('company') ?? 1; - - $customers = User::with('billingAddress', 'shippingAddress') - ->customer() - ->whereCompany($company) - ->latest() - ->get(); - - $currencies = Currency::latest()->get(); - - $default_language = CompanySetting::getSetting('language', $company); - - $default_currency = Currency::findOrFail( - CompanySetting::getSetting('currency', $company) - ); - - $moment_date_format = CompanySetting::getSetting( - 'moment_date_format', - $request->header('company') - ); - - $fiscal_year = CompanySetting::getSetting( - 'fiscal_year', - $request->header('company') - ); - - $items = Item::with('taxes')->get(); - - $taxTypes = TaxType::latest()->get(); - - $paymentMethods = PaymentMethod::whereCompany($request->header('company')) - ->latest() - ->get(); - - $units = Unit::whereCompany($request->header('company')) - ->latest() - ->get(); - - return response()->json([ - 'user' => $user, - 'customers' => $customers, - 'currencies' => $currencies, - 'default_currency' => $default_currency, - 'default_language' => $default_language, - 'company' => $user->company, - 'companies' => Company::all(), - 'items' => $items, - 'taxTypes' => $taxTypes, - 'moment_date_format' => $moment_date_format, - 'paymentMethods' => $paymentMethods, - 'units' => $units, - 'fiscal_year' => $fiscal_year, - ]); - } - - public function ping() - { - return response()->json([ - 'success' => 'crater-self-hosted' - ]); - } -} diff --git a/app/Http/Controllers/V1/Auth/ConfirmPasswordController.php b/app/Http/Controllers/V1/Auth/ConfirmPasswordController.php new file mode 100644 index 00000000..b038c680 --- /dev/null +++ b/app/Http/Controllers/V1/Auth/ConfirmPasswordController.php @@ -0,0 +1,40 @@ +middleware('auth'); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/V1/Auth/ForgotPasswordController.php similarity index 88% rename from app/Http/Controllers/Auth/ForgotPasswordController.php rename to app/Http/Controllers/V1/Auth/ForgotPasswordController.php index 8065e062..8323dcb4 100644 --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ b/app/Http/Controllers/V1/Auth/ForgotPasswordController.php @@ -1,5 +1,6 @@ middleware('guest'); - } - /** * Get the response for a successful password reset link. * diff --git a/app/Http/Controllers/V1/Auth/IsRegisteredController.php b/app/Http/Controllers/V1/Auth/IsRegisteredController.php new file mode 100644 index 00000000..69682e7c --- /dev/null +++ b/app/Http/Controllers/V1/Auth/IsRegisteredController.php @@ -0,0 +1,25 @@ +email)->first()) { + return 'true'; + } else { + return 'false'; + } + } +} diff --git a/app/Http/Controllers/V1/Auth/LoginController.php b/app/Http/Controllers/V1/Auth/LoginController.php new file mode 100644 index 00000000..c7eed90c --- /dev/null +++ b/app/Http/Controllers/V1/Auth/LoginController.php @@ -0,0 +1,40 @@ +middleware('guest')->except('logout'); + } +} diff --git a/app/Http/Controllers/V1/Auth/RegisterController.php b/app/Http/Controllers/V1/Auth/RegisterController.php new file mode 100644 index 00000000..fd43cbc7 --- /dev/null +++ b/app/Http/Controllers/V1/Auth/RegisterController.php @@ -0,0 +1,73 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => $data['password'] + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/V1/Auth/ResetPasswordController.php similarity index 89% rename from app/Http/Controllers/Auth/ResetPasswordController.php rename to app/Http/Controllers/V1/Auth/ResetPasswordController.php index 3e7bb224..80e16b32 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/V1/Auth/ResetPasswordController.php @@ -1,11 +1,13 @@ middleware('guest'); - } /** * Get the response for a successful password reset. diff --git a/app/Http/Controllers/V1/Auth/VerificationController.php b/app/Http/Controllers/V1/Auth/VerificationController.php new file mode 100644 index 00000000..8f5834f2 --- /dev/null +++ b/app/Http/Controllers/V1/Auth/VerificationController.php @@ -0,0 +1,42 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/app/Http/Controllers/V1/Backup/ApiController.php b/app/Http/Controllers/V1/Backup/ApiController.php new file mode 100644 index 00000000..0ab3a811 --- /dev/null +++ b/app/Http/Controllers/V1/Backup/ApiController.php @@ -0,0 +1,23 @@ +json([ + 'success' => true + ]); + } + +} diff --git a/app/Http/Controllers/V1/Backup/BackupsController.php b/app/Http/Controllers/V1/Backup/BackupsController.php new file mode 100644 index 00000000..3684a4b1 --- /dev/null +++ b/app/Http/Controllers/V1/Backup/BackupsController.php @@ -0,0 +1,93 @@ +file_disk_id}", now()->addSeconds(4), function () use ($backupDestination) { + return $backupDestination + ->backups() + ->map(function (Backup $backup) { + return [ + 'path' => $backup->path(), + 'created_at' => $backup->date()->format('Y-m-d H:i:s'), + 'size' => Format::humanReadableSize($backup->size()), + ]; + }) + ->toArray(); + }); + + return response()->json([ + 'backups' => $backups, + 'disks' => $configuredBackupDisks + ]); + } catch (\Exception $e) { + return response()->json([ + 'backups' => [], + 'error' => 'invalid_disk_credentials', + 'error_message' => $e->getMessage(), + 'disks' => $configuredBackupDisks + ]); + } + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return JsonResponse + */ + public function store(Request $request) + { + dispatch(new CreateBackupJob($request->all()))->onQueue(config('backup.queue.name')); + + return $this->respondSuccess(); + } + + /** + * Remove the specified resource from storage. + * + * @param \Illuminate\Http\Request $request + * @return JsonResponse + */ + public function destroy($disk, Request $request) + { + $validated = $request->validate([ + 'path' => ['required', new PathToZip()], + ]); + + $backupDestination = BackupDestination::create(config('filesystems.default'), config('backup.backup.name')); + + $backupDestination + ->backups() + ->first(function (Backup $backup) use ($validated) { + return $backup->path() === $validated['path']; + }) + ->delete(); + + return $this->respondSuccess(); + } +} diff --git a/app/Http/Controllers/V1/Backup/DownloadBackupController.php b/app/Http/Controllers/V1/Backup/DownloadBackupController.php new file mode 100644 index 00000000..a462559e --- /dev/null +++ b/app/Http/Controllers/V1/Backup/DownloadBackupController.php @@ -0,0 +1,58 @@ +validate([ + 'path' => ['required', new PathToZip()], + ]); + + $backupDestination = BackupDestination::create(config('filesystems.default'), config('backup.backup.name')); + + $backup = $backupDestination->backups()->first(function (Backup $backup) use ($validated) { + return $backup->path() === $validated['path']; + }); + + if (! $backup) { + return response('Backup not found', Response::HTTP_UNPROCESSABLE_ENTITY); + } + + return $this->respondWithBackupStream($backup); + } + + public function respondWithBackupStream(Backup $backup): StreamedResponse + { + $fileName = pathinfo($backup->path(), PATHINFO_BASENAME); + + $downloadHeaders = [ + 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', + 'Content-Type' => 'application/zip', + 'Content-Length' => $backup->size(), + 'Content-Disposition' => 'attachment; filename="'.$fileName.'"', + 'Pragma' => 'public', + ]; + + return response()->stream(function () use ($backup) { + $stream = $backup->stream(); + + fpassthru($stream); + + if (is_resource($stream)) { + fclose($stream); + } + }, 200, $downloadHeaders); + } +} diff --git a/app/Http/Controllers/V1/CustomField/CustomFieldsController.php b/app/Http/Controllers/V1/CustomField/CustomFieldsController.php new file mode 100644 index 00000000..08acac5a --- /dev/null +++ b/app/Http/Controllers/V1/CustomField/CustomFieldsController.php @@ -0,0 +1,102 @@ +has('limit') ? $request->limit : 5; + + $customFields = CustomField::whereCompany($request->header('company')) + ->applyFilters($request->only([ + 'type', + 'search' + ])) + ->latest() + ->paginateData($limit); + + + return response()->json([ + 'customFields' => $customFields + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\CustomFieldRequest $request + * @return \Illuminate\Http\Response + */ + public function store(CustomFieldRequest $request) + { + $customField = CustomField::createCustomField($request); + + return response()->json([ + 'customField' => $customField, + 'success' => true + ]); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show(CustomField $customField) + { + return response()->json([ + 'customField' => $customField, + 'success' => true + ]); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(CustomFieldRequest $request, CustomField $customField) + { + $customField->updateCustomField($request); + + return response()->json([ + 'customField' => $customField, + 'success' => true + ]); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy(CustomField $customField) + { + if ($customField->customFieldValue()->exists()) { + return response()->json([ + 'error' => 'values_attached' + ]); + } + + $customField->delete(); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Customer/CustomerStatsController.php b/app/Http/Controllers/V1/Customer/CustomerStatsController.php new file mode 100644 index 00000000..e5e97429 --- /dev/null +++ b/app/Http/Controllers/V1/Customer/CustomerStatsController.php @@ -0,0 +1,146 @@ +header('company')); + $startDate = Carbon::now(); + $start = Carbon::now(); + $end = Carbon::now(); + $terms = explode('-', $fiscalYear); + + if ($terms[0] <= $start->month) { + $startDate->month($terms[0])->startOfMonth(); + $start->month($terms[0])->startOfMonth(); + $end->month($terms[0])->endOfMonth(); + } else { + $startDate->subYear()->month($terms[0])->startOfMonth(); + $start->subYear()->month($terms[0])->startOfMonth(); + $end->subYear()->month($terms[0])->endOfMonth(); + } + + if ($request->has('previous_year')) { + $startDate->subYear()->startOfMonth(); + $start->subYear()->startOfMonth(); + $end->subYear()->endOfMonth(); + } + while ($monthCounter < 12) { + array_push( + $invoiceTotals, + Invoice::whereBetween( + 'invoice_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ) + ->whereCompany($request->header('company')) + ->whereCustomer($customer->id) + ->sum('total') ?? 0 + ); + array_push( + $expenseTotals, + Expense::whereBetween( + 'expense_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ) + ->whereCompany($request->header('company')) + ->whereUser($customer->id) + ->sum('amount') ?? 0 + ); + array_push( + $receiptTotals, + Payment::whereBetween( + 'payment_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ) + ->whereCompany($request->header('company')) + ->whereCustomer($customer->id) + ->sum('amount') ?? 0 + ); + array_push( + $netProfits, + ($receiptTotals[$i] - $expenseTotals[$i]) + ); + $i++; + array_push($months, $start->format('M')); + $monthCounter++; + $end->startOfMonth(); + $start->addMonth()->startOfMonth(); + $end->addMonth()->endOfMonth(); + } + + $start->subMonth()->endOfMonth(); + + $salesTotal = Invoice::whereCompany($request->header('company')) + ->whereBetween( + 'invoice_date', + [$startDate->format('Y-m-d'), $start->format('Y-m-d')] + ) + ->whereCustomer($customer->id) + ->sum('total'); + $totalReceipts = Payment::whereCompany($request->header('company')) + ->whereBetween( + 'payment_date', + [$startDate->format('Y-m-d'), $start->format('Y-m-d')] + ) + ->whereCustomer($customer->id) + ->sum('amount'); + $totalExpenses = Expense::whereCompany($request->header('company')) + ->whereBetween( + 'expense_date', + [$startDate->format('Y-m-d'), $start->format('Y-m-d')] + ) + ->whereUser($customer->id) + ->sum('amount'); + $netProfit = (int) $totalReceipts - (int) $totalExpenses; + + $chartData = [ + 'months' => $months, + 'invoiceTotals' => $invoiceTotals, + 'expenseTotals' => $expenseTotals, + 'receiptTotals' => $receiptTotals, + 'netProfit' => $netProfit, + 'netProfits' => $netProfits, + 'salesTotal' => $salesTotal, + 'totalReceipts' => $totalReceipts, + 'totalExpenses' => $totalExpenses + ]; + + $customer = User::with([ + 'billingAddress', + 'shippingAddress', + 'billingAddress.country', + 'shippingAddress.country', + 'currency', + 'fields.customField' + ])->find($customer->id); + + return response()->json([ + 'customer' => $customer, + 'chartData' => $chartData, + ]); + } +} diff --git a/app/Http/Controllers/V1/Customer/CustomersController.php b/app/Http/Controllers/V1/Customer/CustomersController.php new file mode 100644 index 00000000..d42b4e06 --- /dev/null +++ b/app/Http/Controllers/V1/Customer/CustomersController.php @@ -0,0 +1,122 @@ +has('limit') ? $request->limit : 10; + + $customers = User::with('creator') + ->customer() + ->applyFilters($request->only([ + 'search', + 'contact_name', + 'display_name', + 'phone', + 'customer_id', + 'orderByField', + 'orderBy' + ])) + ->whereCompany($request->header('company')) + ->select( + 'users.*', + DB::raw('sum(invoices.due_amount) as due_amount') + ) + ->groupBy('users.id') + ->leftJoin('invoices', 'users.id', '=', 'invoices.user_id') + ->paginateData($limit); + + return response()->json([ + 'customers' => $customers, + 'customerTotalCount' => User::whereRole('customer')->count() + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function store(Requests\CustomerRequest $request) + { + $customer = User::createCustomer($request); + + return response()->json([ + 'customer' => $customer, + 'success' => true + ]); + } + + /** + * Display the specified resource. + * + * @param User $customer + * @return \Illuminate\Http\JsonResponse + */ + public function show(User $customer) + { + $customer->load([ + 'billingAddress.country', + 'shippingAddress.country', + 'fields.customField', + 'creator' + ]); + + $currency = $customer->currency; + + return response()->json([ + 'customer' => $customer, + 'currency' => $currency, + ]); + } + + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \Crater\Models\User $customer + * @return \Illuminate\Http\JsonResponse + */ + public function update(Requests\CustomerRequest $request, User $customer) + { + $customer = User::updateCustomer($request, $customer); + + $customer = User::with('billingAddress', 'shippingAddress', 'fields')->find($customer->id); + + return response()->json([ + 'customer' => $customer, + 'success' => true + ]); + } + + /** + * Remove a list of Customers along side all their resources (ie. Estimates, Invoices, Payments and Addresses) + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function delete(Request $request) + { + User::deleteCustomers($request->ids); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Dashboard/DashboardChartController.php b/app/Http/Controllers/V1/Dashboard/DashboardChartController.php new file mode 100644 index 00000000..cda22d47 --- /dev/null +++ b/app/Http/Controllers/V1/Dashboard/DashboardChartController.php @@ -0,0 +1,32 @@ +whereCompany($request->header('company')) + ->expensesAttributes() + ->get(); + + $amounts = $expensesCategories->pluck('total_amount'); + $names = $expensesCategories->pluck('category.name'); + + return response()->json([ + 'amounts' => $amounts, + 'categories' => $names, + ]); + } +} diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/V1/Dashboard/DashboardController.php similarity index 83% rename from app/Http/Controllers/DashboardController.php rename to app/Http/Controllers/V1/Dashboard/DashboardController.php index 1977c4b3..24b2118c 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/V1/Dashboard/DashboardController.php @@ -1,27 +1,25 @@ header('company')); $startDate = Carbon::now(); @@ -144,25 +141,4 @@ class DashboardController extends Controller 'netProfit' => $netProfit ]); } - - /** - * Retrive Expense Chart data - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function getExpenseChartData(Request $request) - { - $expensesCategories = Expense::with('category') - ->whereCompany($request->header('company')) - ->expensesAttributes() - ->get(); - - $amounts = $expensesCategories->pluck('total_amount'); - $names = $expensesCategories->pluck('category.name'); - - return response()->json([ - 'amounts' => $amounts, - 'categories' => $names, - ]); - } } diff --git a/app/Http/Controllers/V1/Estimate/ChangeEstimateStatusController.php b/app/Http/Controllers/V1/Estimate/ChangeEstimateStatusController.php new file mode 100644 index 00000000..1a986fb9 --- /dev/null +++ b/app/Http/Controllers/V1/Estimate/ChangeEstimateStatusController.php @@ -0,0 +1,26 @@ +update($request->only('status')); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Estimate/ConvertEstimateController.php b/app/Http/Controllers/V1/Estimate/ConvertEstimateController.php new file mode 100644 index 00000000..85a0f93e --- /dev/null +++ b/app/Http/Controllers/V1/Estimate/ConvertEstimateController.php @@ -0,0 +1,95 @@ +load(['items', 'items.taxes', 'user', 'estimateTemplate', 'taxes']); + + $invoice_date = Carbon::now(); + $due_date = Carbon::now()->addDays(7); + + $invoice_prefix = CompanySetting::getSetting( + 'invoice_prefix', + $request->header('company') + ); + + $invoice = Invoice::create([ + 'creator_id' => Auth::id(), + 'invoice_date' => $invoice_date->format('Y-m-d'), + 'due_date' => $due_date->format('Y-m-d'), + 'invoice_number' => $invoice_prefix . "-" . Invoice::getNextInvoiceNumber($invoice_prefix), + 'reference_number' => $estimate->reference_number, + 'user_id' => $estimate->user_id, + 'company_id' => $request->header('company'), + 'invoice_template_id' => 1, + 'status' => Invoice::STATUS_DRAFT, + 'paid_status' => Invoice::STATUS_UNPAID, + 'sub_total' => $estimate->sub_total, + 'discount' => $estimate->discount, + 'discount_type' => $estimate->discount_type, + 'discount_val' => $estimate->discount_val, + 'total' => $estimate->total, + 'due_amount' => $estimate->total, + 'tax_per_item' => $estimate->tax_per_item, + 'discount_per_item' => $estimate->discount_per_item, + 'tax' => $estimate->tax, + 'notes' => $estimate->notes, + 'unique_hash' => str_random(60) + ]); + + $invoiceItems = $estimate->items->toArray(); + + foreach ($invoiceItems as $invoiceItem) { + $invoiceItem['company_id'] = $request->header('company'); + $invoiceItem['name'] = $invoiceItem['name']; + $item = $invoice->items()->create($invoiceItem); + + if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { + foreach ($invoiceItem['taxes'] as $tax) { + $tax['company_id'] = $request->header('company'); + + if ($tax['amount']) { + $item->taxes()->create($tax); + } + } + } + } + + if ($estimate->taxes) { + foreach ($estimate->taxes->toArray() as $tax) { + $tax['company_id'] = $request->header('company'); + unset($tax['estimate_id']); + $invoice->taxes()->create($tax); + } + } + + $invoice = Invoice::with([ + 'items', + 'user', + 'invoiceTemplate', + 'taxes' + ])->find($invoice->id); + + return response()->json([ + 'invoice' => $invoice + ]); + } +} diff --git a/app/Http/Controllers/V1/Estimate/EstimatePdfController.php b/app/Http/Controllers/V1/Estimate/EstimatePdfController.php new file mode 100644 index 00000000..143e6718 --- /dev/null +++ b/app/Http/Controllers/V1/Estimate/EstimatePdfController.php @@ -0,0 +1,20 @@ +getGeneratedPDFOrStream('estimate'); + } +} diff --git a/app/Http/Controllers/V1/Estimate/EstimateTemplatesController.php b/app/Http/Controllers/V1/Estimate/EstimateTemplatesController.php new file mode 100644 index 00000000..cfdf0be9 --- /dev/null +++ b/app/Http/Controllers/V1/Estimate/EstimateTemplatesController.php @@ -0,0 +1,23 @@ +json([ + 'templates' => EstimateTemplate::all() + ]); + } +} diff --git a/app/Http/Controllers/V1/Estimate/EstimatesController.php b/app/Http/Controllers/V1/Estimate/EstimatesController.php new file mode 100644 index 00000000..6d17d66a --- /dev/null +++ b/app/Http/Controllers/V1/Estimate/EstimatesController.php @@ -0,0 +1,104 @@ +has('limit') ? $request->limit : 10; + + $estimates = Estimate::with([ + 'items', + 'user', + 'estimateTemplate', + 'taxes', + 'creator' + ]) + ->join('users', 'users.id', '=', 'estimates.user_id') + ->applyFilters($request->only([ + 'status', + 'customer_id', + 'estimate_id', + 'estimate_number', + 'from_date', + 'to_date', + 'search', + 'orderByField', + 'orderBy' + ])) + ->whereCompany($request->header('company')) + ->select('estimates.*', 'users.name') + ->latest() + ->paginateData($limit); + + $siteData = [ + 'estimates' => $estimates, + 'estimateTotalCount' => Estimate::count() + ]; + + return response()->json($siteData); + } + + public function store(EstimatesRequest $request) + { + $estimate = Estimate::createEstimate($request); + + if ($request->has('estimateSend')) { + $estimate->send($request->title, $request->body); + } + + GenerateEstimatePdfJob::dispatch($estimate); + + return response()->json([ + 'estimate' => $estimate + ]); + } + + public function show(Request $request, Estimate $estimate) + { + $estimate->load([ + 'items', + 'items.taxes', + 'user', + 'estimateTemplate', + 'creator', + 'taxes', + 'taxes.taxType', + 'fields.customField' + ]); + + return response()->json([ + 'estimate' => $estimate, + 'nextEstimateNumber' => $estimate->getEstimateNumAttribute(), + 'estimatePrefix' => $estimate->getEstimatePrefixAttribute(), + ]); + } + + public function update(EstimatesRequest $request, Estimate $estimate) + { + $estimate = $estimate->updateEstimate($request); + + GenerateEstimatePdfJob::dispatch($estimate, true); + + return response()->json([ + 'estimate' => $estimate + ]); + } + + public function delete(DeleteEstimatesRequest $request) + { + Estimate::destroy($request->ids); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Estimate/SendEstimateController.php b/app/Http/Controllers/V1/Estimate/SendEstimateController.php new file mode 100644 index 00000000..ce692bed --- /dev/null +++ b/app/Http/Controllers/V1/Estimate/SendEstimateController.php @@ -0,0 +1,23 @@ +send($request->all()); + + return response()->json($response); + } +} diff --git a/app/Http/Controllers/V1/Expense/DownloadReceiptController.php b/app/Http/Controllers/V1/Expense/DownloadReceiptController.php new file mode 100644 index 00000000..4fc57e40 --- /dev/null +++ b/app/Http/Controllers/V1/Expense/DownloadReceiptController.php @@ -0,0 +1,34 @@ +getFirstMedia('receipts'); + if ($media) { + $imagePath = $media->getPath(); + $response = \Response::download($imagePath, $media->file_name); + ob_end_clean(); + return $response; + } + } + + return response()->json([ + 'error' => 'receipt_not_found' + ]); + } +} diff --git a/app/Http/Controllers/ExpenseCategoryController.php b/app/Http/Controllers/V1/Expense/ExpenseCategoriesController.php similarity index 53% rename from app/Http/Controllers/ExpenseCategoryController.php rename to app/Http/Controllers/V1/Expense/ExpenseCategoriesController.php index 412b7b13..f597cf42 100644 --- a/app/Http/Controllers/ExpenseCategoryController.php +++ b/app/Http/Controllers/V1/Expense/ExpenseCategoriesController.php @@ -1,13 +1,12 @@ header('company'))->get(); + $limit = $request->has('limit') ? $request->limit : 5; + + $categories = ExpenseCategory::whereCompany($request->header('company')) + ->applyFilters($request->only([ + 'category_id', + 'search' + ])) + ->latest() + ->paginateData($limit); return response()->json([ 'categories' => $categories ]); } - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // return view('app.categories.create'); - } - /** * Store a newly created resource in storage. * @@ -41,11 +38,9 @@ class ExpenseCategoryController extends Controller */ public function store(ExpenseCategoryRequest $request) { - $category = new ExpenseCategory(); - $category->name = $request->name; - $category->description = $request->description; - $category->company_id = $request->header('company'); - $category->save(); + $data = $request->validated(); + $data['company_id'] = $request->header('company'); + $category = ExpenseCategory::create($data); return response()->json([ 'category' => $category, @@ -56,24 +51,11 @@ class ExpenseCategoryController extends Controller /** * Display the specified resource. * - * @param \Crater\ExpenseCategory $ExpenseCategory + * @param \Crater\Models\ExpenseCategory $category * @return \Illuminate\Http\Response */ - public function show(ExpenseCategory $ExpenseCategory) + public function show(ExpenseCategory $category) { - // - } - - /** - * Show the form for editing the specified resource. - * - * @param \Crater\ExpensesCategory $ExpensesCategory - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - $category = ExpenseCategory::findOrFail($id); - return response()->json([ 'category' => $category ]); @@ -83,15 +65,12 @@ class ExpenseCategoryController extends Controller * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param \Crater\ExpenseCategory $ExpenseCategory + * @param \Crater\Models\ExpenseCategory $ExpenseCategory * @return \Illuminate\Http\Response */ - public function update(ExpenseCategoryRequest $request, $id) + public function update(ExpenseCategoryRequest $request, ExpenseCategory $category) { - $category = ExpenseCategory::findOrFail($id); - $category->name = $request->name; - $category->description = $request->description; - $category->save(); + $category->update($request->validated()); return response()->json([ 'category' => $category, @@ -102,17 +81,17 @@ class ExpenseCategoryController extends Controller /** * Remove the specified resource from storage. * - * @param \Crater\ExpensesCategory $expensesCategory + * @param \Crater\ExpensesCategory $category * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(ExpenseCategory $category) { - $category = ExpenseCategory::find($id); if ($category->expenses() && $category->expenses()->count() > 0) { return response()->json([ 'success' => false ]); } + $category->delete(); return response()->json([ diff --git a/app/Http/Controllers/V1/Expense/ExpensesController.php b/app/Http/Controllers/V1/Expense/ExpensesController.php new file mode 100644 index 00000000..d4276e70 --- /dev/null +++ b/app/Http/Controllers/V1/Expense/ExpensesController.php @@ -0,0 +1,101 @@ +has('limit') ? $request->limit : 10; + + $expenses = Expense::with('category', 'creator', 'fields') + ->leftJoin('users', 'users.id', '=', 'expenses.user_id') + ->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id') + ->applyFilters($request->only([ + 'expense_category_id', + 'user_id', + 'expense_id', + 'search', + 'from_date', + 'to_date', + 'orderByField', + 'orderBy' + ])) + ->whereCompany($request->header('company')) + ->select('expenses.*', 'expense_categories.name', 'users.name as user_name') + ->paginateData($limit); + + return response()->json([ + 'expenses' => $expenses, + 'expenseTotalCount' => Expense::count() + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function store(ExpenseRequest $request) + { + $expense = Expense::createExpense($request); + + return response()->json([ + 'expense' => $expense, + 'success' => true + ]); + } + + /** + * Display the specified resource. + * + * @param \Crater\Models\Expense $expense + * @return \Illuminate\Http\JsonResponse + */ + public function show(Expense $expense) + { + $expense->load('creator', 'fields.customField'); + + return response()->json([ + 'expense' => $expense + ]); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \Crater\Models\Expense $expense + * @return \Illuminate\Http\JsonResponse + */ + public function update(ExpenseRequest $request, Expense $expense) + { + $expense->updateExpense($request); + + return response()->json([ + 'expense' => $expense, + 'success' => true + ]); + } + + public function delete(DeleteExpensesRequest $request) + { + Expense::destroy($request->ids); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Expense/ShowReceiptController.php b/app/Http/Controllers/V1/Expense/ShowReceiptController.php new file mode 100644 index 00000000..68167042 --- /dev/null +++ b/app/Http/Controllers/V1/Expense/ShowReceiptController.php @@ -0,0 +1,40 @@ +getFirstMedia('receipts'); + if ($media) { + $imagePath = $media->getPath(); + } else { + return response()->json([ + 'error' => 'receipt_does_not_exist' + ]); + } + } + + $type = \File::mimeType($imagePath); + + $image = 'data:' . $type . ';base64,' . base64_encode(file_get_contents($imagePath)); + + return response()->json([ + 'image' => $image, + 'type' => $type + ]); + } +} diff --git a/app/Http/Controllers/V1/Expense/UploadReceiptController.php b/app/Http/Controllers/V1/Expense/UploadReceiptController.php new file mode 100644 index 00000000..43ac3786 --- /dev/null +++ b/app/Http/Controllers/V1/Expense/UploadReceiptController.php @@ -0,0 +1,36 @@ +attachment_receipt); + + if ($data) { + if ($request->type === 'edit') { + $expense->clearMediaCollection('receipts'); + } + + $expense->addMediaFromBase64($data->data) + ->usingFileName($data->name) + ->toMediaCollection('receipts', 'local'); + } + + return response()->json([ + 'success' => 'Expense receipts uploaded successfully' + ]); + } +} diff --git a/app/Http/Controllers/V1/General/BootstrapController.php b/app/Http/Controllers/V1/General/BootstrapController.php new file mode 100644 index 00000000..3818001c --- /dev/null +++ b/app/Http/Controllers/V1/General/BootstrapController.php @@ -0,0 +1,52 @@ +getSettings(['language'])['language']; + + $settings = [ + 'moment_date_format', + 'carbon_date_format', + 'fiscal_year', + 'time_zone', + 'currency' + ]; + + $settings = CompanySetting::getSettings($settings, $user->company_id); + + $default_currency = Currency::findOrFail($settings['currency']); + + return response()->json([ + 'user' => $user, + 'company' => $user->company, + 'currencies' => Currency::all(), + 'countries' => Country::all(), + 'default_currency' => $default_currency, + 'default_language' => $default_language, + 'moment_date_format' => $settings['moment_date_format'], + 'carbon_date_format' => $settings['carbon_date_format'], + 'fiscal_year' => $settings['fiscal_year'], + 'time_zone' => $settings['time_zone'] + ]); + } +} diff --git a/app/Http/Controllers/V1/General/CountriesController.php b/app/Http/Controllers/V1/General/CountriesController.php new file mode 100644 index 00000000..b2946e53 --- /dev/null +++ b/app/Http/Controllers/V1/General/CountriesController.php @@ -0,0 +1,23 @@ +json([ + 'countries' => Country::all() + ]); + } +} diff --git a/app/Http/Controllers/V1/General/CurrenciesController.php b/app/Http/Controllers/V1/General/CurrenciesController.php new file mode 100644 index 00000000..5fa1fb93 --- /dev/null +++ b/app/Http/Controllers/V1/General/CurrenciesController.php @@ -0,0 +1,25 @@ +get(); + + return response()->json([ + 'currencies' => $currencies + ]); + } +} diff --git a/app/Http/Controllers/V1/General/DateFormatsController.php b/app/Http/Controllers/V1/General/DateFormatsController.php new file mode 100644 index 00000000..8a8bb658 --- /dev/null +++ b/app/Http/Controllers/V1/General/DateFormatsController.php @@ -0,0 +1,23 @@ +json([ + 'date_formats' => DateFormatter::get_list() + ]); + } +} diff --git a/app/Http/Controllers/V1/General/FiscalYearsController.php b/app/Http/Controllers/V1/General/FiscalYearsController.php new file mode 100644 index 00000000..3e578063 --- /dev/null +++ b/app/Http/Controllers/V1/General/FiscalYearsController.php @@ -0,0 +1,22 @@ +json([ + 'fiscal_years' => config('crater.fiscal_years') + ]); + } +} diff --git a/app/Http/Controllers/V1/General/LanguagesController.php b/app/Http/Controllers/V1/General/LanguagesController.php new file mode 100644 index 00000000..2a5d4968 --- /dev/null +++ b/app/Http/Controllers/V1/General/LanguagesController.php @@ -0,0 +1,22 @@ +json([ + 'languages' => config('crater.languages') + ]); + } +} diff --git a/app/Http/Controllers/V1/General/NextNumberController.php b/app/Http/Controllers/V1/General/NextNumberController.php new file mode 100644 index 00000000..17e71388 --- /dev/null +++ b/app/Http/Controllers/V1/General/NextNumberController.php @@ -0,0 +1,55 @@ +key; + + $val = $key . '_prefix'; + + $prefix = CompanySetting::getSetting( + $val, + $request->header('company') + ); + + $nextNumber = null; + + switch ($key) { + case 'invoice': + $nextNumber = Invoice::getNextInvoiceNumber($prefix); + break; + + case 'estimate': + $nextNumber = Estimate::getNextEstimateNumber($prefix); + break; + + case 'payment': + $nextNumber = Payment::getNextPaymentNumber($prefix); + break; + + default: + return; + } + + return response()->json([ + 'nextNumber' => $nextNumber, + 'prefix' => $prefix + ]); + } +} diff --git a/app/Http/Controllers/V1/General/NotesController.php b/app/Http/Controllers/V1/General/NotesController.php new file mode 100644 index 00000000..dd85e7c9 --- /dev/null +++ b/app/Http/Controllers/V1/General/NotesController.php @@ -0,0 +1,88 @@ +limit ?? 10; + + $notes = Note::latest() + ->applyFilters($request->only(['type', 'search'])) + ->paginate($limit); + + return response()->json([ + 'notes' => $notes + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(NotesRequest $request) + { + $note = Note::create($request->validated()); + + return response()->json([ + 'note' => $note + ]); + } + + /** + * Display the specified resource. + * + * @param \Crater\Models\Note $note + * @return \Illuminate\Http\Response + */ + public function show(Note $note) + { + return response()->json([ + 'note' => $note + ]); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \Crater\Models\Note $note + * @return \Illuminate\Http\Response + */ + public function update(NotesRequest $request, Note $note) + { + $note->update($request->validated()); + + return response()->json([ + 'note' => $note + ]); + } + + /** + * Remove the specified resource from storage. + * + * @param \Crater\Models\Note $note + * @return \Illuminate\Http\Response + */ + public function destroy(Note $note) + { + $note->delete(); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/General/SearchController.php b/app/Http/Controllers/V1/General/SearchController.php new file mode 100644 index 00000000..d0a34986 --- /dev/null +++ b/app/Http/Controllers/V1/General/SearchController.php @@ -0,0 +1,37 @@ +applyFilters($request->only(['search'])) + ->latest() + ->paginate(10); + + if (Auth::user()->role == 'super admin') { + $users = User::where('role', 'admin') + ->applyFilters($request->only(['search'])) + ->latest() + ->paginate(10); + } + + return response()->json([ + 'customers' => $customers, + 'users' => $users ?? [] + ]); + } +} diff --git a/app/Http/Controllers/V1/General/TimezonesController.php b/app/Http/Controllers/V1/General/TimezonesController.php new file mode 100644 index 00000000..c2a60408 --- /dev/null +++ b/app/Http/Controllers/V1/General/TimezonesController.php @@ -0,0 +1,23 @@ +json([ + 'time_zones' => TimeZones::get_list() + ]); + } +} diff --git a/app/Http/Controllers/V1/Invoice/ChangeInvoiceStatusController.php b/app/Http/Controllers/V1/Invoice/ChangeInvoiceStatusController.php new file mode 100644 index 00000000..781e9ec4 --- /dev/null +++ b/app/Http/Controllers/V1/Invoice/ChangeInvoiceStatusController.php @@ -0,0 +1,34 @@ +status == Invoice::STATUS_SENT) { + $invoice->status = Invoice::STATUS_SENT; + $invoice->sent = true; + $invoice->save(); + } elseif ($request->status == Invoice::STATUS_COMPLETED) { + $invoice->status = Invoice::STATUS_COMPLETED; + $invoice->paid_status = Invoice::STATUS_PAID; + $invoice->due_amount = 0; + $invoice->save(); + } + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Invoice/CloneInvoiceController.php b/app/Http/Controllers/V1/Invoice/CloneInvoiceController.php new file mode 100644 index 00000000..079dc195 --- /dev/null +++ b/app/Http/Controllers/V1/Invoice/CloneInvoiceController.php @@ -0,0 +1,91 @@ +header('company') + ); + + $newInvoice = Invoice::create([ + 'invoice_date' => $date->format('Y-m-d'), + 'due_date' => $date->format('Y-m-d'), + 'invoice_number' => $invoice_prefix . "-" . Invoice::getNextInvoiceNumber($invoice_prefix), + 'reference_number' => $invoice->reference_number, + 'user_id' => $invoice->user_id, + 'company_id' => $request->header('company'), + 'invoice_template_id' => 1, + 'status' => Invoice::STATUS_DRAFT, + 'paid_status' => Invoice::STATUS_UNPAID, + 'sub_total' => $invoice->sub_total, + 'discount' => $invoice->discount, + 'discount_type' => $invoice->discount_type, + 'discount_val' => $invoice->discount_val, + 'total' => $invoice->total, + 'due_amount' => $invoice->total, + 'tax_per_item' => $invoice->tax_per_item, + 'discount_per_item' => $invoice->discount_per_item, + 'tax' => $invoice->tax, + 'notes' => $invoice->notes, + 'unique_hash' => str_random(60) + ]); + + $invoice->load('items.taxes'); + + $invoiceItems = $invoice->items->toArray(); + + foreach ($invoiceItems as $invoiceItem) { + $invoiceItem['company_id'] = $request->header('company'); + $invoiceItem['name'] = $invoiceItem['name']; + $item = $newInvoice->items()->create($invoiceItem); + + if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { + foreach ($invoiceItem['taxes'] as $tax) { + $tax['company_id'] = $request->header('company'); + + if ($tax['amount']) { + $item->taxes()->create($tax); + } + } + } + } + + if ($invoice->taxes) { + foreach ($invoice->taxes->toArray() as $tax) { + $tax['company_id'] = $request->header('company'); + $newInvoice->taxes()->create($tax); + } + } + + $newInvoice = Invoice::with([ + 'items', + 'user', + 'invoiceTemplate', + 'taxes' + ]) + ->find($newInvoice->id); + + return response()->json([ + 'invoice' => $newInvoice, + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Invoice/InvoicePdfController.php b/app/Http/Controllers/V1/Invoice/InvoicePdfController.php new file mode 100644 index 00000000..ac6169df --- /dev/null +++ b/app/Http/Controllers/V1/Invoice/InvoicePdfController.php @@ -0,0 +1,20 @@ +getGeneratedPDFOrStream('invoice'); + } +} diff --git a/app/Http/Controllers/V1/Invoice/InvoiceTemplatesController.php b/app/Http/Controllers/V1/Invoice/InvoiceTemplatesController.php new file mode 100644 index 00000000..802c8047 --- /dev/null +++ b/app/Http/Controllers/V1/Invoice/InvoiceTemplatesController.php @@ -0,0 +1,25 @@ +json([ + 'invoiceTemplates' => $invoiceTemplates + ]); + } +} diff --git a/app/Http/Controllers/V1/Invoice/InvoicesController.php b/app/Http/Controllers/V1/Invoice/InvoicesController.php new file mode 100644 index 00000000..6e086906 --- /dev/null +++ b/app/Http/Controllers/V1/Invoice/InvoicesController.php @@ -0,0 +1,128 @@ +has('limit') ? $request->limit : 10; + + $invoices = Invoice::with(['items', 'user', 'creator', 'invoiceTemplate', 'taxes']) + ->join('users', 'users.id', '=', 'invoices.user_id') + ->applyFilters($request->only([ + 'status', + 'paid_status', + 'customer_id', + 'invoice_id', + 'invoice_number', + 'from_date', + 'to_date', + 'orderByField', + 'orderBy', + 'search', + ])) + ->whereCompany($request->header('company')) + ->select('invoices.*', 'users.name') + ->latest() + ->paginateData($limit); + + return response()->json([ + 'invoices' => $invoices, + 'invoiceTotalCount' => Invoice::count() + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function store(Requests\InvoicesRequest $request) + { + $invoice = Invoice::createInvoice($request); + + if ($request->has('invoiceSend')) { + $invoice->send($request->subject, $request->body); + } + + GenerateInvoicePdfJob::dispatch($invoice); + + return response()->json([ + 'invoice' => $invoice + ]); + } + + /** + * Display the specified resource. + * + * @param \Crater\Models\Invoice $invoice + * @return \Illuminate\Http\JsonResponse + */ + public function show(Invoice $invoice) + { + $invoice->load([ + 'items', + 'items.taxes', + 'user', + 'invoiceTemplate', + 'taxes.taxType', + 'fields.customField' + ]); + + $siteData = [ + 'invoice' => $invoice, + 'nextInvoiceNumber' => $invoice->getInvoiceNumAttribute(), + 'invoicePrefix' => $invoice->getInvoicePrefixAttribute(), + ]; + + return response()->json($siteData); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param Invoice $invoice + * @return \Illuminate\Http\JsonResponse + */ + public function update(Requests\InvoicesRequest $request, Invoice $invoice) + { + $invoice = $invoice->updateInvoice($request); + + GenerateInvoicePdfJob::dispatch($invoice, true); + + return response()->json([ + 'invoice' => $invoice, + 'success' => true + ]); + } + + /** + * delete the specified resources in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function delete(DeleteInvoiceRequest $request) + { + Invoice::destroy($request->ids); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Invoice/SendInvoiceController.php b/app/Http/Controllers/V1/Invoice/SendInvoiceController.php new file mode 100644 index 00000000..b0a6cf35 --- /dev/null +++ b/app/Http/Controllers/V1/Invoice/SendInvoiceController.php @@ -0,0 +1,25 @@ +send($request->all()); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Item/ItemsController.php b/app/Http/Controllers/V1/Item/ItemsController.php new file mode 100644 index 00000000..25fbc453 --- /dev/null +++ b/app/Http/Controllers/V1/Item/ItemsController.php @@ -0,0 +1,106 @@ +has('limit') ? $request->limit : 10; + + $items = Item::with(['taxes', 'creator']) + ->leftJoin('units', 'units.id', '=', 'items.unit_id') + ->applyFilters($request->only([ + 'search', + 'price', + 'unit_id', + 'item_id', + 'orderByField', + 'orderBy' + ])) + ->whereCompany($request->header('company')) + ->select('items.*', 'units.name as unit_name') + ->latest() + ->paginateData($limit); + + return response()->json([ + 'items' => $items, + 'taxTypes' => TaxType::latest()->get(), + 'itemTotalCount' => Item::count() + ]); + } + + /** + * Create Item. + * + * @param Crater\Http\Requests\ItemsRequest $request + * @return \Illuminate\Http\JsonResponse + */ + public function store(Requests\ItemsRequest $request) + { + $item = Item::createItem($request); + + return response()->json([ + 'item' => $item + ]); + } + + /** + * get an existing Item. + * + * @param Item $item + * @return \Illuminate\Http\JsonResponse + */ + public function show(Item $item) + { + $item->load('taxes'); + + return response()->json([ + 'item' => $item + ]); + } + + /** + * Update an existing Item. + * + * @param Crater\Http\Requests\ItemsRequest $request + * @param \Crater\Models\Item $item + * @return \Illuminate\Http\JsonResponse + */ + public function update(Requests\ItemsRequest $request, Item $item) + { + $item = $item->updateItem($request); + + return response()->json([ + 'item' => $item + ]); + } + + /** + * Delete a list of existing Items. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function delete(DeleteItemsRequest $request) + { + Item::destroy($request->ids); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/UnitController.php b/app/Http/Controllers/V1/Item/UnitsController.php similarity index 70% rename from app/Http/Controllers/UnitController.php rename to app/Http/Controllers/V1/Item/UnitsController.php index cb6c1107..f47666d2 100644 --- a/app/Http/Controllers/UnitController.php +++ b/app/Http/Controllers/V1/Item/UnitsController.php @@ -1,12 +1,13 @@ has('limit') ? $request->limit : 5; + $units = Unit::whereCompany($request->header('company')) + ->applyFilters($request->only([ + 'unit_id' + ])) ->latest() - ->get(); + ->paginateData($limit); return response()->json([ 'units' => $units @@ -42,10 +48,9 @@ class UnitController extends Controller */ public function store(UnitRequest $request) { - $unit = new Unit; - $unit->name = $request->name; - $unit->company_id = $request->header('company'); - $unit->save(); + $data = $request->validated(); + $data['company_id'] = $request->header('company'); + $unit = Unit::create($data); return response()->json([ 'unit' => $unit @@ -55,21 +60,10 @@ class UnitController extends Controller /** * Display the specified resource. * - * @param \Crater\Unit $unit + * @param \Crater\Models\Unit $unit * @return \Illuminate\Http\Response */ public function show(Unit $unit) - { - // - } - - /** - * Show the form for editing the specified resource. - * - * @param \Crater\Unit $unit - * @return \Illuminate\Http\Response - */ - public function edit(Unit $unit) { return response()->json([ 'unit' => $unit @@ -80,14 +74,12 @@ class UnitController extends Controller * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param \Crater\Unit $unit + * @param \Crater\Models\Unit $unit * @return \Illuminate\Http\Response */ public function update(UnitRequest $request, Unit $unit) { - $unit->name = $request->name; - $unit->company_id = $request->header('company'); - $unit->save(); + $unit->update($request->validated()); return response()->json([ 'unit' => $unit @@ -97,14 +89,12 @@ class UnitController extends Controller /** * Remove the specified resource from storage. * - * @param \Crater\Unit $unit + * @param \Crater\Models\Unit $unit * @return \Illuminate\Http\Response */ public function destroy(Unit $unit) { - $items = $unit->items; - - if ($items->count() > 0) { + if ($unit->items()->exists()) { return response()->json([ 'error' => 'items_attached' ]); diff --git a/app/Http/Controllers/V1/Mobile/AuthController.php b/app/Http/Controllers/V1/Mobile/AuthController.php new file mode 100644 index 00000000..8c7151fe --- /dev/null +++ b/app/Http/Controllers/V1/Mobile/AuthController.php @@ -0,0 +1,43 @@ +validate([ + 'username' => 'required|email', + 'password' => 'required', + 'device_name' => 'required', + ]); + + $user = User::where('email', $request->username)->first(); + + if (! $user || ! Hash::check($request->password, $user->password)) { + throw ValidationException::withMessages([ + 'email' => ['The provided credentials are incorrect.'], + ]); + } + + return response()->json([ + 'type' => 'Bearer', + 'token' => $user->createToken($request->device_name)->plainTextToken + ]); + } + + public function logout(Request $request) + { + $request->user()->currentAccessToken()->delete(); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Mobile/Customer/EstimatePdfController.php b/app/Http/Controllers/V1/Mobile/Customer/EstimatePdfController.php new file mode 100644 index 00000000..ed6fd84b --- /dev/null +++ b/app/Http/Controllers/V1/Mobile/Customer/EstimatePdfController.php @@ -0,0 +1,46 @@ +status == Estimate::STATUS_SENT || $estimate->status == Estimate::STATUS_DRAFT)) { + $estimate->status = Estimate::STATUS_VIEWED; + $estimate->save(); + $notifyEstimateViewed = CompanySetting::getSetting( + 'notify_estimate_viewed', + $estimate->company_id + ); + + if ($notifyEstimateViewed == 'YES') { + $data['estimate'] = Estimate::findOrFail($estimate->id)->toArray(); + $data['user'] = User::find($estimate->user_id)->toArray(); + $notificationEmail = CompanySetting::getSetting( + 'notification_email', + $estimate->company_id + ); + + \Mail::to($notificationEmail)->send(new EstimateViewedMail($data)); + } + } + + return $estimate->getGeneratedPDFOrStream('estimate'); + } +} diff --git a/app/Http/Controllers/V1/Mobile/Customer/InvoicePdfController.php b/app/Http/Controllers/V1/Mobile/Customer/InvoicePdfController.php new file mode 100644 index 00000000..040921fe --- /dev/null +++ b/app/Http/Controllers/V1/Mobile/Customer/InvoicePdfController.php @@ -0,0 +1,47 @@ +status == Invoice::STATUS_SENT || $invoice->status == Invoice::STATUS_DRAFT)) { + $invoice->status = Invoice::STATUS_VIEWED; + $invoice->viewed = true; + $invoice->save(); + $notifyInvoiceViewed = CompanySetting::getSetting( + 'notify_invoice_viewed', + $invoice->company_id + ); + + if ($notifyInvoiceViewed == 'YES') { + $data['invoice'] = Invoice::findOrFail($invoice->id)->toArray(); + $data['user'] = User::find($invoice->user_id)->toArray(); + $notificationEmail = CompanySetting::getSetting( + 'notification_email', + $invoice->company_id + ); + + \Mail::to($notificationEmail)->send(new InvoiceViewedMail($data)); + } + } + + return $invoice->getGeneratedPDFOrStream('invoice'); + } +} diff --git a/app/Http/Controllers/V1/Onboarding/DatabaseConfigurationController.php b/app/Http/Controllers/V1/Onboarding/DatabaseConfigurationController.php new file mode 100644 index 00000000..19f6103f --- /dev/null +++ b/app/Http/Controllers/V1/Onboarding/DatabaseConfigurationController.php @@ -0,0 +1,90 @@ +environmentManager = $environmentManager; + } + + /** + * + * @param DatabaseEnvironmentRequest $request + */ + public function saveDatabaseEnvironment(DatabaseEnvironmentRequest $request) + { + Artisan::call('config:clear'); + Artisan::call('cache:clear'); + + $results = $this->environmentManager->saveDatabaseVariables($request); + + if (array_key_exists("success", $results)) { + Artisan::call('config:clear'); + Artisan::call('cache:clear'); + Artisan::call('storage:link'); + Artisan::call('migrate --seed --force'); + } + + return response()->json($results); + } + + public function getDatabaseEnvironment(Request $request) + { + $databaseData = []; + + switch ($request->connection) { + case 'sqlite': + $databaseData = [ + 'database_connection' => 'sqlite', + 'database_name' => database_path('database.sqlite'), + ]; + break; + + case 'pgsql': + $databaseData = [ + 'database_connection' => 'pgsql', + 'database_host' => '127.0.0.1', + 'database_port' => 5432, + ]; + break; + + case 'mysql': + $databaseData = [ + 'database_connection' => 'mysql', + 'database_host' => '127.0.0.1', + 'database_port' => 3306, + ]; + break; + + case 'sqlsrv': + $databaseData = [ + 'driver' => 'sqlsrv', + 'host' => '127.0.0.1', + 'port' => 1433, + ]; + break; + } + + + return response()->json([ + 'config' => $databaseData, + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Onboarding/FinishController.php b/app/Http/Controllers/V1/Onboarding/FinishController.php new file mode 100644 index 00000000..fc91829d --- /dev/null +++ b/app/Http/Controllers/V1/Onboarding/FinishController.php @@ -0,0 +1,25 @@ +put('database_created', 'database_created'); + + $user = User::where('role', 'super admin')->first(); + Auth::login($user); + } +} diff --git a/app/Http/Controllers/V1/Onboarding/OnboardingWizardController.php b/app/Http/Controllers/V1/Onboarding/OnboardingWizardController.php new file mode 100644 index 00000000..57dbb5e7 --- /dev/null +++ b/app/Http/Controllers/V1/Onboarding/OnboardingWizardController.php @@ -0,0 +1,47 @@ +has('database_created')) { + + return response()->json([ + 'profile_complete' => 0 + ]); + } + + return response()->json([ + 'profile_complete' => Setting::getSetting('profile_complete') + ]); + } + + public function updateStep(Request $request) + { + $setting = Setting::getSetting('profile_complete'); + + if ($setting === 'COMPLETED') { + return response()->json([ + 'profile_complete' => $setting + ]); + } + + Setting::setSetting('profile_complete', $request->profile_complete); + + return response()->json([ + 'profile_complete' => Setting::getSetting('profile_complete') + ]); + } +} diff --git a/app/Http/Controllers/PermissionsController.php b/app/Http/Controllers/V1/Onboarding/PermissionsController.php similarity index 88% rename from app/Http/Controllers/PermissionsController.php rename to app/Http/Controllers/V1/Onboarding/PermissionsController.php index df829322..692df849 100755 --- a/app/Http/Controllers/PermissionsController.php +++ b/app/Http/Controllers/V1/Onboarding/PermissionsController.php @@ -1,9 +1,10 @@ has('limit') ? $request->limit : 5; + $paymentMethods = PaymentMethod::whereCompany($request->header('company')) + ->applyFilters($request->only([ + 'method_id', + 'search' + ])) ->latest() - ->get(); + ->paginateData($limit); return response()->json([ 'paymentMethods' => $paymentMethods ]); } - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - /** * Store a newly created resource in storage. * @@ -42,10 +39,7 @@ class PaymentMethodController extends Controller */ public function store(PaymentMethodRequest $request) { - $paymentMethod = new PaymentMethod; - $paymentMethod->name = $request->name; - $paymentMethod->company_id = $request->header('company'); - $paymentMethod->save(); + $paymentMethod = PaymentMethod::createPaymentMethod($request); return response()->json([ 'paymentMethod' => $paymentMethod @@ -55,21 +49,10 @@ class PaymentMethodController extends Controller /** * Display the specified resource. * - * @param \Crater\PaymentMethod $paymentMethod + * @param \Crater\Models\PaymentMethod $paymentMethod * @return \Illuminate\Http\Response */ public function show(PaymentMethod $paymentMethod) - { - // - } - - /** - * Show the form for editing the specified resource. - * - * @param \Crater\PaymentMethod $paymentMethod - * @return \Illuminate\Http\Response - */ - public function edit(PaymentMethod $paymentMethod) { return response()->json([ 'paymentMethod' => $paymentMethod @@ -80,14 +63,12 @@ class PaymentMethodController extends Controller * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param \Crater\PaymentMethod $paymentMethod + * @param \Crater\Models\PaymentMethod $paymentMethod * @return \Illuminate\Http\Response */ public function update(PaymentMethodRequest $request, PaymentMethod $paymentMethod) { - $paymentMethod->name = $request->name; - $paymentMethod->company_id = $request->header('company'); - $paymentMethod->save(); + $paymentMethod->update($request->validated()); return response()->json([ 'paymentMethod' => $paymentMethod @@ -97,7 +78,7 @@ class PaymentMethodController extends Controller /** * Remove the specified resource from storage. * - * @param \Crater\PaymentMethod $paymentMethod + * @param \Crater\Models\PaymentMethod $paymentMethod * @return \Illuminate\Http\Response */ public function destroy(PaymentMethod $paymentMethod) diff --git a/app/Http/Controllers/V1/Payment/PaymentPdfController.php b/app/Http/Controllers/V1/Payment/PaymentPdfController.php new file mode 100644 index 00000000..e24f2265 --- /dev/null +++ b/app/Http/Controllers/V1/Payment/PaymentPdfController.php @@ -0,0 +1,20 @@ +getGeneratedPDFOrStream('payment'); + } +} diff --git a/app/Http/Controllers/V1/Payment/PaymentsController.php b/app/Http/Controllers/V1/Payment/PaymentsController.php new file mode 100644 index 00000000..30c99b30 --- /dev/null +++ b/app/Http/Controllers/V1/Payment/PaymentsController.php @@ -0,0 +1,96 @@ +has('limit') ? $request->limit : 10; + + $payments = Payment::with(['user', 'invoice', 'paymentMethod', 'creator']) + ->join('users', 'users.id', '=', 'payments.user_id') + ->leftJoin('invoices', 'invoices.id', '=', 'payments.invoice_id') + ->leftJoin('payment_methods', 'payment_methods.id', '=', 'payments.payment_method_id') + ->applyFilters($request->only([ + 'search', + 'payment_number', + 'payment_id', + 'payment_method_id', + 'customer_id', + 'orderByField', + 'orderBy' + ])) + ->whereCompany($request->header('company')) + ->select('payments.*', 'users.name', 'invoices.invoice_number', 'payment_methods.name as payment_mode') + ->latest() + ->paginateData($limit); + + return response()->json([ + 'payments' => $payments, + 'paymentTotalCount' => Payment::count() + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(PaymentRequest $request) + { + $payment = Payment::createPayment($request); + + return response()->json([ + 'payment' => $payment, + 'success' => true + ]); + } + + public function show(Request $request, Payment $payment) + { + $payment->load([ + 'user', + 'invoice', + 'paymentMethod', + 'fields.customField' + ]); + + return response()->json([ + 'nextPaymentNumber' => $payment->getPaymentNumAttribute(), + 'payment_prefix' => $payment->getPaymentPrefixAttribute(), + 'payment' => $payment, + ]); + } + + public function update(PaymentRequest $request, Payment $payment) + { + $payment = $payment->updatePayment($request); + + return response()->json([ + 'payment' => $payment, + 'success' => true + ]); + } + + public function delete(DeletePaymentsRequest $request) + { + Payment::deletePayments($request->ids); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Payment/SendPaymentController.php b/app/Http/Controllers/V1/Payment/SendPaymentController.php new file mode 100644 index 00000000..4f512f2d --- /dev/null +++ b/app/Http/Controllers/V1/Payment/SendPaymentController.php @@ -0,0 +1,23 @@ +send($request->all()); + + return response()->json($response); + } +} diff --git a/app/Http/Controllers/V1/Report/CustomerSalesReportController.php b/app/Http/Controllers/V1/Report/CustomerSalesReportController.php new file mode 100644 index 00000000..ec0cc237 --- /dev/null +++ b/app/Http/Controllers/V1/Report/CustomerSalesReportController.php @@ -0,0 +1,92 @@ +first(); + + $locale = CompanySetting::getSetting('language', $company->id); + + App::setLocale($locale); + + $start = Carbon::createFromFormat('Y-m-d', $request->from_date); + $end = Carbon::createFromFormat('Y-m-d', $request->to_date); + + $customers = User::with(['invoices' => function ($query) use ($start, $end) { + $query->whereBetween( + 'invoice_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ); + }]) + ->customer() + ->whereCompany($company->id) + ->applyInvoiceFilters($request->only(['from_date', 'to_date'])) + ->get(); + + $totalAmount = 0; + foreach ($customers as $customer) { + $customerTotalAmount = 0; + foreach ($customer->invoices as $invoice) { + $customerTotalAmount += $invoice->total; + } + $customer->totalAmount = $customerTotalAmount; + $totalAmount += $customerTotalAmount; + } + + $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); + $from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat); + $to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat); + + $colors = [ + 'primary_text_color', + 'heading_text_color', + 'section_heading_text_color', + 'border_color', + 'body_text_color', + 'footer_text_color', + 'footer_total_color', + 'footer_bg_color', + 'date_text_color' + ]; + + $colorSettings = CompanySetting::whereIn('option', $colors) + ->whereCompany($company->id) + ->get(); + + view()->share([ + 'customers' => $customers, + 'totalAmount' => $totalAmount, + 'colorSettings' => $colorSettings, + 'company' => $company, + 'from_date' => $from_date, + 'to_date' => $to_date + ]); + + $pdf = PDF::loadView('app.pdf.reports.sales-customers'); + + if ($request->has('download')) { + return $pdf->download(); + } + + return $pdf->stream(); + } +} diff --git a/app/Http/Controllers/V1/Report/ExpensesReportController.php b/app/Http/Controllers/V1/Report/ExpensesReportController.php new file mode 100644 index 00000000..6190b74e --- /dev/null +++ b/app/Http/Controllers/V1/Report/ExpensesReportController.php @@ -0,0 +1,77 @@ +first(); + + $locale = CompanySetting::getSetting('language', $company->id); + + App::setLocale($locale); + + $expenseCategories = Expense::with('category') + ->whereCompany($company->id) + ->applyFilters($request->only(['from_date', 'to_date'])) + ->expensesAttributes() + ->get(); + + $totalAmount = 0; + foreach ($expenseCategories as $category) { + $totalAmount += $category->total_amount; + } + + $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); + $from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat); + $to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat); + + $colors = [ + 'primary_text_color', + 'heading_text_color', + 'section_heading_text_color', + 'border_color', + 'body_text_color', + 'footer_text_color', + 'footer_total_color', + 'footer_bg_color', + 'date_text_color' + ]; + $colorSettings = CompanySetting::whereIn('option', $colors) + ->whereCompany($company->id) + ->get(); + + view()->share([ + 'expenseCategories' => $expenseCategories, + 'colorSettings' => $colorSettings, + 'totalExpense' => $totalAmount, + 'company' => $company, + 'from_date' => $from_date, + 'to_date' => $to_date + ]); + $pdf = PDF::loadView('app.pdf.reports.expenses'); + + if ($request->has('download')) { + return $pdf->download(); + } + + return $pdf->stream(); + } +} diff --git a/app/Http/Controllers/V1/Report/ItemSalesReportController.php b/app/Http/Controllers/V1/Report/ItemSalesReportController.php new file mode 100644 index 00000000..8e954c37 --- /dev/null +++ b/app/Http/Controllers/V1/Report/ItemSalesReportController.php @@ -0,0 +1,76 @@ +first(); + + $locale = CompanySetting::getSetting('language', $company->id); + + App::setLocale($locale); + + $items = InvoiceItem::whereCompany($company->id) + ->applyInvoiceFilters($request->only(['from_date', 'to_date'])) + ->itemAttributes() + ->get(); + + $totalAmount = 0; + foreach ($items as $item) { + $totalAmount += $item->total_amount; + } + + $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); + $from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat); + $to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat); + + $colors = [ + 'primary_text_color', + 'heading_text_color', + 'section_heading_text_color', + 'border_color', + 'body_text_color', + 'footer_text_color', + 'footer_total_color', + 'footer_bg_color', + 'date_text_color' + ]; + $colorSettings = CompanySetting::whereIn('option', $colors) + ->whereCompany($company->id) + ->get(); + + view()->share([ + 'items' => $items, + 'colorSettings' => $colorSettings, + 'totalAmount' => $totalAmount, + 'company' => $company, + 'from_date' => $from_date, + 'to_date' => $to_date + ]); + $pdf = PDF::loadView('app.pdf.reports.sales-items'); + + if ($request->has('download')) { + return $pdf->download(); + } + + return $pdf->stream(); + } +} diff --git a/app/Http/Controllers/V1/Report/ProfitLossReportController.php b/app/Http/Controllers/V1/Report/ProfitLossReportController.php new file mode 100644 index 00000000..389f5660 --- /dev/null +++ b/app/Http/Controllers/V1/Report/ProfitLossReportController.php @@ -0,0 +1,85 @@ +first(); + + $locale = CompanySetting::getSetting('language', $company->id); + + App::setLocale($locale); + + $invoicesAmount = Invoice::whereCompany($company->id) + ->applyFilters($request->only(['from_date', 'to_date'])) + ->wherePaidStatus(Invoice::STATUS_PAID) + ->sum('total'); + + $expenseCategories = Expense::with('category') + ->whereCompany($company->id) + ->applyFilters($request->only(['from_date', 'to_date'])) + ->expensesAttributes() + ->get(); + + $totalAmount = 0; + foreach ($expenseCategories as $category) { + $totalAmount += $category->total_amount; + } + + $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); + $from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat); + $to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat); + + $colors = [ + 'primary_text_color', + 'heading_text_color', + 'section_heading_text_color', + 'border_color', + 'body_text_color', + 'footer_text_color', + 'footer_total_color', + 'footer_bg_color', + 'date_text_color' + ]; + $colorSettings = CompanySetting::whereIn('option', $colors) + ->whereCompany($company->id) + ->get(); + + view()->share([ + 'company' => $company, + 'income' => $invoicesAmount, + 'expenseCategories' => $expenseCategories, + 'totalExpense' => $totalAmount, + 'colorSettings' => $colorSettings, + 'company' => $company, + 'from_date' => $from_date, + 'to_date' => $to_date + ]); + $pdf = PDF::loadView('app.pdf.reports.profit-loss'); + + if ($request->has('download')) { + return $pdf->download(); + } + + return $pdf->stream(); + } +} diff --git a/app/Http/Controllers/V1/Report/TaxSummaryReportController.php b/app/Http/Controllers/V1/Report/TaxSummaryReportController.php new file mode 100644 index 00000000..3babe7fd --- /dev/null +++ b/app/Http/Controllers/V1/Report/TaxSummaryReportController.php @@ -0,0 +1,79 @@ +first(); + + $locale = CompanySetting::getSetting('language', $company->id); + + App::setLocale($locale); + + $taxTypes = Tax::with('taxType', 'invoice', 'invoiceItem') + ->whereCompany($company->id) + ->whereInvoicesFilters($request->only(['from_date', 'to_date'])) + ->taxAttributes() + ->get(); + + $totalAmount = 0; + foreach ($taxTypes as $taxType) { + $totalAmount += $taxType->total_tax_amount; + } + + $dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id); + $from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat); + $to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat); + + $colors = [ + 'primary_text_color', + 'heading_text_color', + 'section_heading_text_color', + 'border_color', + 'body_text_color', + 'footer_text_color', + 'footer_total_color', + 'footer_bg_color', + 'date_text_color' + ]; + + $colorSettings = CompanySetting::whereIn('option', $colors) + ->whereCompany($company->id) + ->get(); + + view()->share([ + 'taxTypes' => $taxTypes, + 'totalTaxAmount' => $totalAmount, + 'colorSettings' => $colorSettings, + 'company' => $company, + 'from_date' => $from_date, + 'to_date' => $to_date + ]); + + $pdf = PDF::loadView('app.pdf.reports.tax-summary'); + + if ($request->has('download')) { + return $pdf->download(); + } + + return $pdf->stream(); + } +} diff --git a/app/Http/Controllers/V1/Settings/CompanyController.php b/app/Http/Controllers/V1/Settings/CompanyController.php new file mode 100644 index 00000000..7ff4d58a --- /dev/null +++ b/app/Http/Controllers/V1/Settings/CompanyController.php @@ -0,0 +1,127 @@ +load([ + 'addresses', + 'addresses.country', + 'company', + 'company.address', + 'company.address.country' + ]); + + return response()->json([ + 'user' => $user + ]); + } + + /** + * Update the Admin profile. + * Includes name, email and (or) password + * + * @param \Crater\Http\Requests\ProfileRequest $request + * @return \Illuminate\Http\JsonResponse + */ + public function updateProfile(ProfileRequest $request) + { + $user = Auth::user(); + + $user->update($request->validated()); + + return response()->json([ + 'user' => $user, + 'success' => true + ]); + } + + /** + * Update Admin Company Details + * @param \Crater\Http\Requests\CompanyRequest $request + * @return \Illuminate\Http\JsonResponse + */ + public function updateCompany(CompanyRequest $request) + { + $company = Auth::user()->company; + + $company->update($request->only('name')); + + $company->address()->updateOrCreate(['company_id' => $company->id], $request->except(['name'])); + + return response()->json([ + 'company' => $company, + 'success' => true + ]); + } + + /** + * Upload the company logo to storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function uploadCompanyLogo(Request $request) + { + $data = json_decode($request->company_logo); + + if ($data) { + $company = Company::find($request->header('company')); + + if ($company) { + $company->clearMediaCollection('logo'); + + $company->addMediaFromBase64($data->data) + ->usingFileName($data->name) + ->toMediaCollection('logo'); + } + } + + return response()->json([ + 'success' => true + ]); + } + + /** + * Upload the Admin Avatar to public storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function uploadAvatar(Request $request) + { + $data = json_decode($request->admin_avatar); + + if ($data) { + $user = auth()->user(); + + if ($user) { + $user->clearMediaCollection('admin_avatar'); + + $user->addMediaFromBase64($data->data) + ->usingFileName($data->name) + ->toMediaCollection('admin_avatar'); + } + } + + return response()->json([ + 'user' => $user, + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Settings/DiskController.php b/app/Http/Controllers/V1/Settings/DiskController.php new file mode 100644 index 00000000..8e9563a1 --- /dev/null +++ b/app/Http/Controllers/V1/Settings/DiskController.php @@ -0,0 +1,186 @@ +has('limit') ? $request->limit : 5; + $disks = FileDisk::applyFilters($request->all()) + ->latest() + ->paginateData($limit); + + return response()->json([ + 'disks' => $disks, + ]); + } + + /** + * + * @param DiskEnvironmentRequest $request + * @return JsonResponse + */ + public function store(DiskEnvironmentRequest $request) + { + if(!FileDisk::validateCredentials($request->credentials, $request->driver)) { + return response()->json([ + 'success' => false, + 'error' => 'invalid_credentials' + ]); + } + + $disk = FileDisk::createDisk($request); + + return response()->json([ + 'success' => true, + 'disk' => $disk + ]); + } + + /** + * + * @param Request $request + * @param \Crater\Models\FileDisk $file_disk + * @return JsonResponse + */ + public function update(FileDisk $disk, Request $request) + { + $credentials = $request->credentials; + $driver = $request->driver; + + if($credentials && $driver && $disk->type !== 'SYSTEM') { + if(!FileDisk::validateCredentials($credentials, $driver)) { + return response()->json([ + 'success' => false, + 'error' => 'invalid_credentials' + ]); + } + + $disk->updateDisk($request); + } else if($request->set_as_default) { + $disk->setAsDefaultDisk(); + } + + return response()->json([ + 'success' => true, + 'disk' => $disk + ]); + } + + /** + * @param Request $request + * @return JsonResponse + */ + public function show($disk) + { + $diskData = []; + switch ($disk) { + case 'local': + $diskData = [ + 'root' => config('filesystems.disks.local.root'), + ]; + break; + + + case 's3': + $diskData = [ + 'key' => '', + 'secret' => '', + 'region' => '', + 'bucket' => '', + 'root' => '', + ]; + break; + + case 'doSpaces': + $diskData = [ + 'key' => '', + 'secret' => '', + 'region' => '', + 'bucket' => '', + 'endpoint' => '', + 'root' => '', + ]; + break; + + case 'dropbox': + $diskData = [ + 'token' => '', + 'key' => '', + 'secret' => '', + 'app' => '', + 'root' => '', + ]; + break; + } + + $data = array_merge($diskData); + + return response()->json($data); + } + + /** + * Remove the specified resource from storage. + * + * @param \Crater\Models\FileDisk $taxType + * @return \Illuminate\Http\Response + */ + public function destroy(FileDisk $disk) + { + if ($disk->setAsDefault() && $disk->type === 'SYSTEM') { + return response()->json([ + 'success' => false + ]); + } + + $disk->delete(); + + return response()->json([ + 'success' => true + ]); + } + + /** + * + * @return JsonResponse + */ + public function getDiskDrivers() + { + $drivers = [ + [ + 'name' => 'Local', + 'value' => 'local' + ], + [ + 'name' => 'Amazon S3', + 'value' => 's3' + ], + [ + 'name' => 'Digital Ocean Spaces', + 'value' => 'doSpaces' + ], + [ + 'name' => 'Dropbox', + 'value' => 'dropbox' + ], + ]; + + $default = config('filesystems.default'); + + return response()->json([ + 'drivers' => $drivers, + 'default' => $default + ]); + } +} diff --git a/app/Http/Controllers/V1/Settings/GetCompanySettingsController.php b/app/Http/Controllers/V1/Settings/GetCompanySettingsController.php new file mode 100644 index 00000000..eb567559 --- /dev/null +++ b/app/Http/Controllers/V1/Settings/GetCompanySettingsController.php @@ -0,0 +1,23 @@ +settings, $request->header('company')); + + return response()->json($settings); + } +} diff --git a/app/Http/Controllers/V1/Settings/GetUserSettingsController.php b/app/Http/Controllers/V1/Settings/GetUserSettingsController.php new file mode 100644 index 00000000..f27c99b6 --- /dev/null +++ b/app/Http/Controllers/V1/Settings/GetUserSettingsController.php @@ -0,0 +1,23 @@ +json($user->getSettings($request->settings)); + } +} diff --git a/app/Http/Controllers/EnvironmentController.php b/app/Http/Controllers/V1/Settings/MailConfigurationController.php similarity index 59% rename from app/Http/Controllers/EnvironmentController.php rename to app/Http/Controllers/V1/Settings/MailConfigurationController.php index 5da15687..5eabc85b 100755 --- a/app/Http/Controllers/EnvironmentController.php +++ b/app/Http/Controllers/V1/Settings/MailConfigurationController.php @@ -1,68 +1,40 @@ EnvironmentManager = $environmentManager; + $this->environmentManager = $environmentManager; } /** * - * @param DatabaseEnvironmentRequest $request - */ - public function saveDatabaseEnvironment(DatabaseEnvironmentRequest $request) - { - Artisan::call('config:clear'); - Artisan::call('cache:clear'); - - $results = $this->EnvironmentManager->saveDatabaseVariables($request); - - if(array_key_exists("success", $results)) { - Artisan::call('config:clear'); - Artisan::call('cache:clear'); - Artisan::call('storage:link'); - Artisan::call('key:generate --force'); - Artisan::call('migrate --seed --force'); - Artisan::call('migrate', ['--path' => 'vendor/laravel/passport/database/migrations', '--force' => true]); - - \Storage::disk('local')->put('database_created', 'database_created'); - - Setting::setSetting('profile_complete', 3); - } - - return response()->json($results); - } - - /** - * - * @param DatabaseEnvironmentRequest $request + * @param MailEnvironmentRequest $request * @return JsonResponse */ public function saveMailEnvironment(MailEnvironmentRequest $request) { $setting = Setting::getSetting('profile_complete'); - $results = $this->EnvironmentManager->saveMailVariables($request); + $results = $this->environmentManager->saveMailVariables($request); if ($setting !== 'COMPLETED') { @@ -110,4 +82,19 @@ class EnvironmentController extends Controller return response()->json($drivers); } + + public function testEmailConfig(Request $request) + { + $this->validate($request, [ + 'to' => 'required|email', + 'subject' => 'required', + 'message' => 'required' + ]); + + Mail::to($request->to)->send(new TestMail($request->subject, $request->message)); + + return response()->json([ + 'success' => true + ]); + } } diff --git a/app/Http/Controllers/TaxTypeController.php b/app/Http/Controllers/V1/Settings/TaxTypesController.php similarity index 55% rename from app/Http/Controllers/TaxTypeController.php rename to app/Http/Controllers/V1/Settings/TaxTypesController.php index 3379c703..e4fed9e9 100644 --- a/app/Http/Controllers/TaxTypeController.php +++ b/app/Http/Controllers/V1/Settings/TaxTypesController.php @@ -1,12 +1,13 @@ has('limit') ? $request->limit : 5; + $taxTypes = TaxType::whereCompany($request->header('company')) + ->applyFilters($request->only([ + 'tax_type_id', + 'search', + 'orderByField', + 'orderBy' + ])) ->latest() - ->get(); + ->paginateData($limit); return response()->json([ 'taxTypes' => $taxTypes ]); } - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - /** * Store a newly created resource in storage. * @@ -42,15 +41,11 @@ class TaxTypeController extends Controller */ public function store(TaxTypeRequest $request) { - $taxType = new TaxType(); - $taxType->name = $request->name; - $taxType->percent = $request->percent; - $taxType->description = $request->description; - if ($request->has('compound_tax')) { - $taxType->compound_tax = $request->compound_tax; - } - $taxType->company_id = $request->header('company'); - $taxType->save(); + $data = $request->validated(); + + $data['company_id'] = $request->header('company'); + + $taxType = TaxType::create($data); return response()->json([ 'taxType' => $taxType, @@ -60,21 +55,10 @@ class TaxTypeController extends Controller /** * Display the specified resource. * - * @param \Crater\TaxType $taxType + * @param \Crater\Models\TaxType $taxType * @return \Illuminate\Http\Response */ public function show(TaxType $taxType) - { - // - } - - /** - * Show the form for editing the specified resource. - * - * @param \Crater\TaxType $taxType - * @return \Illuminate\Http\Response - */ - public function edit(TaxType $taxType) { return response()->json([ 'taxType' => $taxType @@ -85,19 +69,12 @@ class TaxTypeController extends Controller * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param \Crater\TaxType $taxType + * @param \Crater\Models\TaxType $taxType * @return \Illuminate\Http\Response */ public function update(TaxTypeRequest $request, TaxType $taxType) { - $taxType->name = $request->name; - $taxType->percent = $request->percent; - $taxType->description = $request->description; - if ($request->has('collective_tax')) { - $taxType->collective_tax = $request->collective_tax; - } - $taxType->compound_tax = $request->compound_tax; - $taxType->save(); + $taxType->update($request->validated()); return response()->json([ 'taxType' => $taxType, @@ -107,7 +84,7 @@ class TaxTypeController extends Controller /** * Remove the specified resource from storage. * - * @param \Crater\TaxType $taxType + * @param \Crater\Models\TaxType $taxType * @return \Illuminate\Http\Response */ public function destroy(TaxType $taxType) diff --git a/app/Http/Controllers/V1/Settings/UpdateCompanySettingsController.php b/app/Http/Controllers/V1/Settings/UpdateCompanySettingsController.php new file mode 100644 index 00000000..5f9089b7 --- /dev/null +++ b/app/Http/Controllers/V1/Settings/UpdateCompanySettingsController.php @@ -0,0 +1,25 @@ +settings, $request->header('company')); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Settings/UpdateUserSettingsController.php b/app/Http/Controllers/V1/Settings/UpdateUserSettingsController.php new file mode 100644 index 00000000..7be67843 --- /dev/null +++ b/app/Http/Controllers/V1/Settings/UpdateUserSettingsController.php @@ -0,0 +1,27 @@ +setSettings($request->settings); + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Update/CheckVersionController.php b/app/Http/Controllers/V1/Update/CheckVersionController.php new file mode 100644 index 00000000..bcc4103f --- /dev/null +++ b/app/Http/Controllers/V1/Update/CheckVersionController.php @@ -0,0 +1,26 @@ +json($json); + } +} diff --git a/app/Http/Controllers/V1/Update/CopyFilesController.php b/app/Http/Controllers/V1/Update/CopyFilesController.php new file mode 100644 index 00000000..5ad6b56e --- /dev/null +++ b/app/Http/Controllers/V1/Update/CopyFilesController.php @@ -0,0 +1,30 @@ +validate([ + 'path' => 'required', + ]); + + $path = Updater::copyFiles($request->path); + + return response()->json([ + 'success' => true, + 'path' => $path + ]); + } +} diff --git a/app/Http/Controllers/V1/Update/DownloadUpdateController.php b/app/Http/Controllers/V1/Update/DownloadUpdateController.php new file mode 100644 index 00000000..7bfe4211 --- /dev/null +++ b/app/Http/Controllers/V1/Update/DownloadUpdateController.php @@ -0,0 +1,30 @@ +validate([ + 'version' => 'required', + ]); + + $path = Updater::download($request->version); + + return response()->json([ + 'success' => true, + 'path' => $path + ]); + } +} diff --git a/app/Http/Controllers/V1/Update/FinishUpdateController.php b/app/Http/Controllers/V1/Update/FinishUpdateController.php new file mode 100644 index 00000000..6c5b13d9 --- /dev/null +++ b/app/Http/Controllers/V1/Update/FinishUpdateController.php @@ -0,0 +1,28 @@ +validate([ + 'installed' => 'required', + 'version' => 'required', + ]); + + $json = Updater::finishUpdate($request->installed, $request->version); + + return response()->json($json); + } +} diff --git a/app/Http/Controllers/V1/Update/MigrateUpdateController.php b/app/Http/Controllers/V1/Update/MigrateUpdateController.php new file mode 100644 index 00000000..3f03cff1 --- /dev/null +++ b/app/Http/Controllers/V1/Update/MigrateUpdateController.php @@ -0,0 +1,25 @@ +json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Controllers/V1/Update/UnzipUpdateController.php b/app/Http/Controllers/V1/Update/UnzipUpdateController.php new file mode 100644 index 00000000..198c5c8e --- /dev/null +++ b/app/Http/Controllers/V1/Update/UnzipUpdateController.php @@ -0,0 +1,38 @@ +validate([ + 'path' => 'required', + ]); + + try { + $path = Updater::unzip($request->path); + + return response()->json([ + 'success' => true, + 'path' => $path + ]); + + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'error' => $e->getMessage() + ], 500); + } + } +} diff --git a/app/Http/Controllers/UpdateController.php b/app/Http/Controllers/V1/Update/UpdateController.php similarity index 94% rename from app/Http/Controllers/UpdateController.php rename to app/Http/Controllers/V1/Update/UpdateController.php index 2b75d837..2ae79ac4 100644 --- a/app/Http/Controllers/UpdateController.php +++ b/app/Http/Controllers/V1/Update/UpdateController.php @@ -1,16 +1,16 @@ validate([ diff --git a/app/Http/Controllers/V1/Users/UsersController.php b/app/Http/Controllers/V1/Users/UsersController.php new file mode 100644 index 00000000..5c5d8f5a --- /dev/null +++ b/app/Http/Controllers/V1/Users/UsersController.php @@ -0,0 +1,113 @@ +has('limit') ? $request->limit : 10; + + $users = User::where('role', 'admin', 'creator') + ->applyFilters( + $request->only([ + 'phone', + 'email', + 'display_name', + 'orderByField', + 'orderBy' + ]) + ) + ->latest() + ->paginate($limit); + + return response()->json([ + 'users' => $users + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\UserRequest $request + * @return \Illuminate\Http\JsonResponse + */ + public function store(UserRequest $request) + { + $data = $request->validated(); + $data['role'] = 'admin'; + $data['company_id'] = Auth::user()->company_id; + $data['creator_id'] = Auth::id(); + $user = User::create($data); + + $user->setSettings([ + 'language' => CompanySetting::getSetting('language', $user->company_id) + ]); + + return response()->json([ + 'user' => $user, + 'success' => true + ]); + } + + /** + * Display the specified resource. + * + * @param \Crater\Models\User $user + * @return \Illuminate\Http\JsonResponse + */ + public function show(User $user) + { + return response()->json([ + 'user' => $user, + 'success' => true + ]); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\UserRequest $request + * @param \Crater\Models\User $user + * @return \Illuminate\Http\JsonResponse + */ + public function update(UserRequest $request, User $user) + { + $user->update($request->validated()); + + return response()->json([ + 'user' => $user, + 'success' => true + ]); + } + + /** + * Display a listing of the resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function delete(Request $request) + { + if ($request->users) { + User::destroy($request->users); + } + + return response()->json([ + 'success' => true + ]); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index ac2ab965..15bfffb4 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -1,8 +1,10 @@ [ - 'throttle:60,1', - 'bindings', + EnsureFrontendRequestsAreStateful::class, + 'throttle:180,1', + \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; @@ -51,7 +56,7 @@ class Kernel extends HttpKernel * @var array */ protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth' => \Crater\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, @@ -61,8 +66,9 @@ class Kernel extends HttpKernel 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'install' => \Crater\Http\Middleware\InstallationMiddleware::class, 'redirect-if-installed' => \Crater\Http\Middleware\RedirectIfInstalled::class, + 'redirect-if-unauthenticated' => \Crater\Http\Middleware\RedirectIfUnauthorized::class, ]; - /** + /** * The priority-sorted list of middleware. * * This forces the listed middleware to always be in the given order. @@ -72,7 +78,7 @@ class Kernel extends HttpKernel protected $middlewarePriority = [ \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\Authenticate::class, + \Crater\Http\Middleware\Authenticate::class, \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Auth\Middleware\Authorize::class, diff --git a/app/Http/Middleware/AdminMiddleware.php b/app/Http/Middleware/AdminMiddleware.php index 4b29aca9..d44e3752 100644 --- a/app/Http/Middleware/AdminMiddleware.php +++ b/app/Http/Middleware/AdminMiddleware.php @@ -1,4 +1,5 @@ guest() || !Auth::user()->isAdmin()) { + if (Auth::guard($guard)->guest() || !Auth::user()->isSuperAdminOrAdmin()) { if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } else { diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index d3dadaf6..37f8aa63 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -1,5 +1,5 @@ has('installed')) { + if (\Storage::disk('local')->has('database_created')) { $setting = CompanySetting::getSetting('time_zone', $request->header('company')); + $timezone = config('app.timezone'); + if ($setting && $setting != null && $setting != $timezone) { config(['app.timezone' => $setting]); } + + if($request->has('file_disk_id')) { + $file_disk = FileDisk::find($request->file_disk_id); + } else { + $file_disk = FileDisk::whereSetAsDefault(true)->first(); + } + + if($file_disk) { + $file_disk->setConfig(); + } } return $next($request); diff --git a/app/Http/Middleware/InstallationMiddleware.php b/app/Http/Middleware/InstallationMiddleware.php index e21a3080..6bfc2840 100644 --- a/app/Http/Middleware/InstallationMiddleware.php +++ b/app/Http/Middleware/InstallationMiddleware.php @@ -3,7 +3,7 @@ namespace Crater\Http\Middleware; use Closure; -use Crater\Setting; +use Crater\Models\Setting; class InstallationMiddleware { diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index e448844f..7371d4fd 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -1,6 +1,8 @@ check()) { - return redirect('/admin'); + return redirect(RouteServiceProvider::HOME); } return $next($request); diff --git a/app/Http/Middleware/RedirectIfInstalled.php b/app/Http/Middleware/RedirectIfInstalled.php index 0b98bb60..7b0f3317 100644 --- a/app/Http/Middleware/RedirectIfInstalled.php +++ b/app/Http/Middleware/RedirectIfInstalled.php @@ -3,7 +3,7 @@ namespace Crater\Http\Middleware; use Closure; -use Crater\Setting; +use Crater\Models\Setting; class RedirectIfInstalled { @@ -21,6 +21,7 @@ class RedirectIfInstalled return redirect('login'); } } + return $next($request); } } diff --git a/app/Http/Middleware/RedirectIfUnauthorized.php b/app/Http/Middleware/RedirectIfUnauthorized.php new file mode 100644 index 00000000..79ba72e7 --- /dev/null +++ b/app/Http/Middleware/RedirectIfUnauthorized.php @@ -0,0 +1,26 @@ +check()) { + return $next($request); + } + + return redirect('/login'); + } +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index adca012f..d34a5825 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -18,6 +18,6 @@ class VerifyCsrfToken extends Middleware * @var array */ protected $except = [ - // + 'login' ]; } diff --git a/app/Http/Requests/CompanyRequest.php b/app/Http/Requests/CompanyRequest.php index a8147cd3..fad905b8 100644 --- a/app/Http/Requests/CompanyRequest.php +++ b/app/Http/Requests/CompanyRequest.php @@ -23,8 +23,12 @@ class CompanyRequest extends FormRequest public function rules() { return [ - 'name' => 'required', - 'country_id' => 'required' + 'name' => [ + 'required' + ], + 'country_id' => [ + 'required' + ] ]; } } diff --git a/app/Http/Requests/CompanySettingRequest.php b/app/Http/Requests/CompanySettingRequest.php index e587bfdf..380c88fd 100644 --- a/app/Http/Requests/CompanySettingRequest.php +++ b/app/Http/Requests/CompanySettingRequest.php @@ -23,12 +23,24 @@ class CompanySettingRequest extends FormRequest public function rules() { return [ - 'currency' => 'required', - 'time_zone' => 'required', - 'language' => 'required', - 'fiscal_year' => 'required', - 'moment_date_format' => 'required', - 'carbon_date_format' => 'required', + 'currency' => [ + 'required' + ], + 'time_zone' => [ + 'required' + ], + 'language' => [ + 'required' + ], + 'fiscal_year' => [ + 'required' + ], + 'moment_date_format' => [ + 'required' + ], + 'carbon_date_format' => [ + 'required' + ] ]; } } diff --git a/app/Http/Requests/CustomFieldRequest.php b/app/Http/Requests/CustomFieldRequest.php new file mode 100644 index 00000000..45ee7d43 --- /dev/null +++ b/app/Http/Requests/CustomFieldRequest.php @@ -0,0 +1,37 @@ + 'required', + 'label' => 'required', + 'model_type' => 'required', + 'order' => 'required', + 'type' => 'required', + 'is_required' => 'required|boolean', + 'options' => 'array', + 'placeholder' => 'string|nullable', + ]; + } +} diff --git a/app/Http/Requests/CustomerRequest.php b/app/Http/Requests/CustomerRequest.php index d93e5de1..cdfb7bd6 100644 --- a/app/Http/Requests/CustomerRequest.php +++ b/app/Http/Requests/CustomerRequest.php @@ -1,7 +1,9 @@ getMethod()) { - case 'POST': - return [ - 'name' => 'required', - 'addresses.*.address_street_1' => 'max:255', - 'addresses.*.address_street_2' => 'max:255', - 'email' => 'email|nullable|unique:users,email', - ]; - break; - case 'PUT': - return [ - 'name' => 'required', - 'addresses.*.address_street_1' => 'max:255', - 'addresses.*.address_street_2' => 'max:255', - ]; - break; - default: - break; - } + $rules = [ + 'name' => [ + 'required' + ], + 'addresses.*.address_street_1' => [ + 'max:255' + ], + 'addresses.*.address_street_2' => [ + 'max:255' + ], + 'email' => [ + 'email', + 'nullable', + 'unique:users,email', + ] + ]; + + if ($this->isMethod('PUT') && $this->email != null) { + $rules = [ + 'email' => [ + 'email', + 'nullable', + Rule::unique('users')->ignore($this->route('customer')->id) + ] + ]; + }; + + return $rules; } } diff --git a/app/Http/Requests/DatabaseEnvironmentRequest.php b/app/Http/Requests/DatabaseEnvironmentRequest.php index e1130225..e8f442c6 100644 --- a/app/Http/Requests/DatabaseEnvironmentRequest.php +++ b/app/Http/Requests/DatabaseEnvironmentRequest.php @@ -23,13 +23,58 @@ class DatabaseEnvironmentRequest extends FormRequest */ public function rules() { - return [ - 'app_url' => 'required|url', - 'database_connection' => 'required|string', - 'database_hostname' => 'required|string', - 'database_port' => 'required|numeric', - 'database_name' => 'required|string', - 'database_username' => 'required|string', - ]; + switch ($this->get('database_connection')) { + case 'sqlite': + return [ + 'app_url' => [ + 'required', + 'url' + ], + 'app_domain' => [ + 'required', + ], + 'database_connection' => [ + 'required', + 'string' + ], + 'database_name' => [ + 'required', + 'string' + ], + ]; + break; + default: + return [ + 'app_url' => [ + 'required', + 'url' + ], + 'app_domain' => [ + 'required', + ], + 'database_connection' => [ + 'required', + 'string' + ], + 'database_hostname' => [ + 'required', + 'string' + ], + 'database_port' => [ + 'required', + 'numeric' + ], + 'database_name' => [ + 'required', + 'string' + ], + 'database_username' => [ + 'required', + 'string' + ], + ]; + break; + + } } } diff --git a/app/Http/Requests/DeleteCustomersRequest.php b/app/Http/Requests/DeleteCustomersRequest.php new file mode 100644 index 00000000..fb5c4525 --- /dev/null +++ b/app/Http/Requests/DeleteCustomersRequest.php @@ -0,0 +1,37 @@ + [ + 'required' + ], + 'ids.*' => [ + 'required', + Rule::exists('users', 'id') + ] + ]; + } +} diff --git a/app/Http/Requests/DeleteEstimatesRequest.php b/app/Http/Requests/DeleteEstimatesRequest.php new file mode 100644 index 00000000..c9833622 --- /dev/null +++ b/app/Http/Requests/DeleteEstimatesRequest.php @@ -0,0 +1,37 @@ + [ + 'required' + ], + 'ids.*' => [ + 'required', + Rule::exists('estimates', 'id') + ] + ]; + } +} diff --git a/app/Http/Requests/DeleteExpensesRequest.php b/app/Http/Requests/DeleteExpensesRequest.php new file mode 100644 index 00000000..0b90a9d0 --- /dev/null +++ b/app/Http/Requests/DeleteExpensesRequest.php @@ -0,0 +1,37 @@ + [ + 'required' + ], + 'ids.*' => [ + 'required', + Rule::exists('expenses', 'id') + ] + ]; + } +} diff --git a/app/Http/Requests/DeleteInvoiceRequest.php b/app/Http/Requests/DeleteInvoiceRequest.php new file mode 100644 index 00000000..0ccaa87b --- /dev/null +++ b/app/Http/Requests/DeleteInvoiceRequest.php @@ -0,0 +1,40 @@ + [ + 'required' + ], + 'ids.*' => [ + 'required', + Rule::exists('invoices', 'id'), + new RelationNotExist(Invoice::class, 'payments') + ] + ]; + } +} diff --git a/app/Http/Requests/DeleteItemsRequest.php b/app/Http/Requests/DeleteItemsRequest.php new file mode 100644 index 00000000..70b00805 --- /dev/null +++ b/app/Http/Requests/DeleteItemsRequest.php @@ -0,0 +1,42 @@ + [ + 'required' + ], + 'ids.*' => [ + 'required', + Rule::exists('items', 'id'), + new RelationNotExist(Item::class, 'invoiceItems'), + new RelationNotExist(Item::class, 'estimateItems'), + new RelationNotExist(Item::class, 'taxes') + ] + ]; + } +} diff --git a/app/Http/Requests/DeletePaymentsRequest.php b/app/Http/Requests/DeletePaymentsRequest.php new file mode 100644 index 00000000..6b8a84bc --- /dev/null +++ b/app/Http/Requests/DeletePaymentsRequest.php @@ -0,0 +1,37 @@ + [ + 'required' + ], + 'ids.*' => [ + 'required', + Rule::exists('payments', 'id') + ] + ]; + } +} diff --git a/app/Http/Requests/DiskEnvironmentRequest.php b/app/Http/Requests/DiskEnvironmentRequest.php new file mode 100644 index 00000000..45536b08 --- /dev/null +++ b/app/Http/Requests/DiskEnvironmentRequest.php @@ -0,0 +1,119 @@ +get('driver')) { + case 's3': + $rules = [ + 'credentials.key' => [ + 'required', + 'string' + ], + 'credentials.secret' => [ + 'required', + 'string' + ], + 'credentials.region' => [ + 'required', + 'string' + ], + 'credentials.bucket' => [ + 'required', + 'string' + ], + 'credentials.root' => [ + 'required', + 'string' + ], + ]; + break; + + case 'doSpaces': + $rules = [ + 'credentials.key' => [ + 'required', + 'string' + ], + 'credentials.secret' => [ + 'required', + 'string' + ], + 'credentials.region' => [ + 'required', + 'string' + ], + 'credentials.bucket' => [ + 'required', + 'string' + ], + 'credentials.endpoint' => [ + 'required', + 'string' + ], + 'credentials.root' => [ + 'required', + 'string' + ], + ]; + break; + + case 'dropbox': + $rules = [ + 'credentials.token' => [ + 'required', + 'string' + ], + 'credentials.key' => [ + 'required', + 'string' + ], + 'credentials.secret' => [ + 'required', + 'string' + ], + 'credentials.app' => [ + 'required', + 'string' + ], + 'credentials.root' => [ + 'required', + 'string' + ], + ]; + break; + } + + $defaultRules = [ + 'name' => [ + 'required', + ], + 'driver' => [ + 'required', + ] + ]; + + return array_merge($rules, $defaultRules); + } +} diff --git a/app/Http/Requests/EstimatesRequest.php b/app/Http/Requests/EstimatesRequest.php index b312d742..ac0dfc46 100644 --- a/app/Http/Requests/EstimatesRequest.php +++ b/app/Http/Requests/EstimatesRequest.php @@ -1,6 +1,8 @@ 'required', - 'expiry_date' => 'required', - 'user_id' => 'required', - 'discount' => 'required', - 'discount_val' => 'required', - 'sub_total' => 'required', - 'total' => 'required', - 'tax' => 'required', - 'estimate_template_id' => 'required', - 'items' => 'required|array', - 'items.*.description' => 'max:255', - 'items.*' => 'required|max:255', - 'items.*.name' => 'required', - 'items.*.quantity' => 'required', - 'items.*.price' => 'required' + 'estimate_date' => [ + 'required' + ], + 'expiry_date' => [ + 'required' + ], + 'user_id' => [ + 'required' + ], + 'estimate_number' => [ + 'required', + new UniqueNumber(Estimate::class) + ], + 'discount' => [ + 'required' + ], + 'discount_val' => [ + 'required' + ], + 'sub_total' => [ + 'required' + ], + 'total' => [ + 'required' + ], + 'tax' => [ + 'required' + ], + 'estimate_template_id' => [ + 'required' + ], + 'items' => [ + 'required', + 'array' + ], + 'items.*.description' => [ + 'max:255' + ], + 'items.*' => [ + 'required', + 'max:255' + ], + 'items.*.name' => [ + 'required' + ], + 'items.*.quantity' => [ + 'required' + ], + 'items.*.price' => [ + 'required' + ] ]; + if ($this->isMethod('PUT')) { + $rules['estimate_number'] = [ + 'required', + new UniqueNumber(Estimate::class, $this->route('estimate')->id) + ]; + } + return $rules; } } diff --git a/app/Http/Requests/ExpenseCategoryRequest.php b/app/Http/Requests/ExpenseCategoryRequest.php index 2dd2c1e2..a09343dc 100644 --- a/app/Http/Requests/ExpenseCategoryRequest.php +++ b/app/Http/Requests/ExpenseCategoryRequest.php @@ -23,7 +23,12 @@ class ExpenseCategoryRequest extends FormRequest public function rules() { return [ - 'name' => 'required' + 'name' => [ + 'required' + ], + 'description' => [ + 'nullable' + ] ]; } } diff --git a/app/Http/Requests/ExpenseRequest.php b/app/Http/Requests/ExpenseRequest.php index 5facff08..a822e443 100644 --- a/app/Http/Requests/ExpenseRequest.php +++ b/app/Http/Requests/ExpenseRequest.php @@ -1,4 +1,5 @@ 'required', - 'expense_category_id' => 'required', - 'amount' => 'required' + 'expense_date' => [ + 'required' + ], + 'expense_category_id' => [ + 'required' + ], + 'amount' => [ + 'required' + ], + 'user_id' => [ + 'nullable' + ], + 'notes' => [ + 'nullable' + ] ]; } } diff --git a/app/Http/Requests/GetSettingsRequest.php b/app/Http/Requests/GetSettingsRequest.php new file mode 100644 index 00000000..21390d83 --- /dev/null +++ b/app/Http/Requests/GetSettingsRequest.php @@ -0,0 +1,36 @@ + [ + 'required' + ], + 'settings.*' => [ + 'required', + 'string' + ] + ]; + } +} diff --git a/app/Http/Requests/InvoicesRequest.php b/app/Http/Requests/InvoicesRequest.php index 387d251d..279f717a 100644 --- a/app/Http/Requests/InvoicesRequest.php +++ b/app/Http/Requests/InvoicesRequest.php @@ -1,6 +1,8 @@ 'required', - 'due_date' => 'required', - 'user_id' => 'required', - 'discount' => 'required', - 'discount_val' => 'required', - 'sub_total' => 'required', - 'total' => 'required', - 'tax' => 'required', - 'invoice_template_id' => 'required', - 'items' => 'required|array', - 'items.*' => 'required|max:255', - 'items.*.description' => 'max:255', - 'items.*.name' => 'required', - 'items.*.quantity' => 'required', - 'items.*.price' => 'required' + 'invoice_date' => [ + 'required' + ], + 'due_date' => [ + 'required' + ], + 'user_id' => [ + 'required' + ], + 'invoice_number' => [ + 'required', + new UniqueNumber(Invoice::class) + ], + 'discount' => [ + 'required' + ], + 'discount_val' => [ + 'required' + ], + 'sub_total' => [ + 'required' + ], + 'total' => [ + 'required' + ], + 'tax' => [ + 'required' + ], + 'invoice_template_id' => [ + 'required' + ], + 'items' => [ + 'required', + 'array' + ], + 'items.*' => [ + 'required', + 'max:255' + ], + 'items.*.description' => [ + 'max:255' + ], + 'items.*.name' => [ + 'required' + ], + 'items.*.quantity' => [ + 'required' + ], + 'items.*.price' => [ + 'required' + ] ]; + if ($this->isMethod('PUT')) { + $rules['invoice_number'] = [ + 'required', + new UniqueNumber(Invoice::class, $this->route('invoice')->id) + ]; + } + return $rules; } } diff --git a/app/Http/Requests/ItemsRequest.php b/app/Http/Requests/ItemsRequest.php index f5b01a63..4b8632ca 100644 --- a/app/Http/Requests/ItemsRequest.php +++ b/app/Http/Requests/ItemsRequest.php @@ -23,8 +23,18 @@ class ItemsRequest extends FormRequest public function rules() { return [ - 'name' => 'required', - 'price' => 'required', + 'name' => [ + 'required' + ], + 'price' => [ + 'required' + ], + 'unit_id' => [ + 'nullable' + ], + 'description' => [ + 'nullable' + ] ]; } } diff --git a/app/Http/Requests/MailEnvironmentRequest.php b/app/Http/Requests/MailEnvironmentRequest.php index a8f7085e..74519544 100644 --- a/app/Http/Requests/MailEnvironmentRequest.php +++ b/app/Http/Requests/MailEnvironmentRequest.php @@ -26,52 +26,128 @@ class MailEnvironmentRequest extends FormRequest switch ($this->get('mail_driver')) { case 'smtp': return [ - 'mail_driver' => 'required|string', - 'mail_host' => 'required|string', - 'mail_port' => 'required', - 'mail_username' => 'required|string', - 'mail_password' => 'required|string', - 'mail_encryption' => 'required|string', - 'from_name' => 'required|string', - 'from_mail' => 'required|string', + 'mail_driver' => [ + 'required', + 'string' + ], + 'mail_host' => [ + 'required', + 'string' + ], + 'mail_port' => [ + 'required' + ], + 'mail_username' => [ + 'required', + 'string' + ], + 'mail_password' => [ + 'required', + 'string' + ], + 'mail_encryption' => [ + 'required', + 'string' + ], + 'from_name' => [ + 'required', + 'string' + ], + 'from_mail' => [ + 'required', + 'string' + ], ]; break; case 'mailgun': return [ - 'mail_driver' => 'required|string', - 'mail_mailgun_domain' => 'required|string', - 'mail_mailgun_secret' => 'required|string', - 'mail_mailgun_endpoint' => 'required|string', - 'from_name' => 'required|string', - 'from_mail' => 'required|string', + 'mail_driver' => [ + 'required', + 'string' + ], + 'mail_mailgun_domain' => [ + 'required', + 'string' + ], + 'mail_mailgun_secret' => [ + 'required', + 'string' + ], + 'mail_mailgun_endpoint' => [ + 'required', + 'string' + ], + 'from_name' => [ + 'required', + 'string' + ], + 'from_mail' => [ + 'required', + 'string' + ], ]; break; case 'ses': return [ - 'mail_driver' => 'required|string', - 'mail_host' => 'required|string', - 'mail_port' => 'required', - 'mail_ses_key' => 'required|string', - 'mail_ses_secret' => 'required|string', - 'mail_encryption' => 'required|string', - 'from_name' => 'required|string', - 'from_mail' => 'required|string', + 'mail_driver' => [ + 'required', + 'string' + ], + 'mail_host' => [ + 'required', + 'string' + ], + 'mail_port' => [ + 'required' + ], + 'mail_ses_key' => [ + 'required', + 'string' + ], + 'mail_ses_secret' => [ + 'required', + 'string' + ], + 'mail_encryption' => [ + 'required', + 'string' + ], + 'from_name' => [ + 'required', + 'string' + ], + 'from_mail' => [ + 'required', + 'string' + ], ]; break; case 'mail': return [ - 'from_name' => 'required|string', - 'from_mail' => 'required|string', + 'from_name' => [ + 'required', + 'string' + ], + 'from_mail' => [ + 'required', + 'string' + ] ]; break; case 'sendmail': return [ - 'from_name' => 'required|string', - 'from_mail' => 'required|string', + 'from_name' => [ + 'required', + 'string' + ], + 'from_mail' => [ + 'required', + 'string' + ] ]; break; } diff --git a/app/Http/Requests/NotesRequest.php b/app/Http/Requests/NotesRequest.php new file mode 100644 index 00000000..f765122e --- /dev/null +++ b/app/Http/Requests/NotesRequest.php @@ -0,0 +1,32 @@ + ['required'], + 'name' => ['required'], + 'notes' => ['required'] + ]; + } +} diff --git a/app/Http/Requests/PaymentMethodRequest.php b/app/Http/Requests/PaymentMethodRequest.php index b07ac084..c3a79057 100644 --- a/app/Http/Requests/PaymentMethodRequest.php +++ b/app/Http/Requests/PaymentMethodRequest.php @@ -25,7 +25,10 @@ class PaymentMethodRequest extends FormRequest public function rules() { $data = [ - 'name' => 'required|unique:payment_methods,name' + 'name' => [ + 'required', + 'unique:payment_methods,name' + ] ]; if ($this->getMethod() == 'PUT') { diff --git a/app/Http/Requests/PaymentRequest.php b/app/Http/Requests/PaymentRequest.php index 940687ad..6b8a6f57 100644 --- a/app/Http/Requests/PaymentRequest.php +++ b/app/Http/Requests/PaymentRequest.php @@ -1,6 +1,9 @@ 'required', - 'user_id' => 'required', - 'amount' => 'required', + 'payment_date' => [ + 'required' + ], + 'user_id' => [ + 'required' + ], + 'amount' => [ + 'required' + ], + 'payment_number' => [ + 'required', + new UniqueNumber(Payment::class) + ], + 'invoice_id' => [ + 'nullable', + ], + 'payment_method_id' => [ + 'nullable', + ], + 'notes' => [ + 'nullable', + ], ]; + if ($this->isMethod('PUT')) { + $rules['payment_number'] = [ + 'required', + new UniqueNumber(Payment::class, $this->route('payment')->id) + ]; + } + return $rules; } } diff --git a/app/Http/Requests/ProfileRequest.php b/app/Http/Requests/ProfileRequest.php index 4bc88847..43890c88 100644 --- a/app/Http/Requests/ProfileRequest.php +++ b/app/Http/Requests/ProfileRequest.php @@ -3,7 +3,7 @@ namespace Crater\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; -use Crater\User; +use Illuminate\Support\Facades\Auth; class ProfileRequest extends FormRequest { @@ -24,32 +24,19 @@ class ProfileRequest extends FormRequest */ public function rules() { - $user = User::find(1); - - switch ($this->getMethod()) { - case 'POST': - return [ - 'name' => 'required', - 'password' => 'required|min:8', - 'address_street_1' => 'max:255', - 'address_street_2' => 'max:255', - 'email' => [ - 'required', - 'email', - Rule::unique('users')->ignore($user->id, 'id') - ] - ]; - break; - case 'PUT': - return [ - 'name' => 'required', - 'address_street_1' => 'max:255', - 'address_street_2' => 'max:255', - 'email' => 'required|email' - ]; - break; - default: - break; - } + return [ + 'name' => [ + 'required' + ], + 'password' => [ + 'nullable', + 'min:8' + ], + 'email' => [ + 'required', + 'email', + Rule::unique('users')->ignore(Auth::id(), 'id') + ] + ]; } } diff --git a/app/Http/Requests/SendEstimatesRequest.php b/app/Http/Requests/SendEstimatesRequest.php new file mode 100644 index 00000000..e0c618e3 --- /dev/null +++ b/app/Http/Requests/SendEstimatesRequest.php @@ -0,0 +1,41 @@ + [ + 'required' + ], + 'body' => [ + 'required' + ], + 'from' => [ + 'required' + ], + 'to' => [ + 'required' + ] + ]; + } +} diff --git a/app/Http/Requests/SendInvoiceRequest.php b/app/Http/Requests/SendInvoiceRequest.php new file mode 100644 index 00000000..623a7334 --- /dev/null +++ b/app/Http/Requests/SendInvoiceRequest.php @@ -0,0 +1,41 @@ + [ + 'required' + ], + 'subject' => [ + 'required' + ], + 'from' => [ + 'required' + ], + 'to' => [ + 'required' + ] + ]; + } +} diff --git a/app/Http/Requests/SendPaymentRequest.php b/app/Http/Requests/SendPaymentRequest.php new file mode 100644 index 00000000..fa7c8308 --- /dev/null +++ b/app/Http/Requests/SendPaymentRequest.php @@ -0,0 +1,41 @@ + [ + 'required' + ], + 'body' => [ + 'required' + ], + 'from' => [ + 'required' + ], + 'to' => [ + 'required' + ] + ]; + } +} diff --git a/app/Http/Requests/SettingKeyRequest.php b/app/Http/Requests/SettingKeyRequest.php index 27761b9c..1302b817 100644 --- a/app/Http/Requests/SettingKeyRequest.php +++ b/app/Http/Requests/SettingKeyRequest.php @@ -24,7 +24,9 @@ class SettingKeyRequest extends FormRequest public function rules() { return [ - 'key' => 'required' + 'key' => [ + 'required' + ] ]; } } diff --git a/app/Http/Requests/SettingRequest.php b/app/Http/Requests/SettingRequest.php index 7364b6d8..e1d99020 100644 --- a/app/Http/Requests/SettingRequest.php +++ b/app/Http/Requests/SettingRequest.php @@ -24,8 +24,12 @@ class SettingRequest extends FormRequest public function rules() { return [ - 'key' => 'required', - 'value' => 'required' + 'key' => [ + 'required' + ], + 'value' => [ + 'required' + ] ]; } } diff --git a/app/Http/Requests/TaxTypeRequest.php b/app/Http/Requests/TaxTypeRequest.php index f05c806e..27ecc128 100644 --- a/app/Http/Requests/TaxTypeRequest.php +++ b/app/Http/Requests/TaxTypeRequest.php @@ -1,4 +1,5 @@ 'required', - 'percent' => 'required' + 'name' => [ + 'required' + ], + 'percent' => [ + 'required' + ], + 'description' => [ + 'nullable' + ], + 'compound_tax' => [ + 'nullable' + ], + 'collective_tax' => [ + 'nullable' + ] ]; } } diff --git a/app/Http/Requests/UnitRequest.php b/app/Http/Requests/UnitRequest.php index c2893424..986b0a26 100644 --- a/app/Http/Requests/UnitRequest.php +++ b/app/Http/Requests/UnitRequest.php @@ -25,7 +25,10 @@ class UnitRequest extends FormRequest public function rules() { $data = [ - 'name' => 'required|unique:units,name' + 'name' => [ + 'required', + 'unique:units,name' + ] ]; if ($this->getMethod() == 'PUT') { diff --git a/app/Http/Requests/UpdateSettingsRequest.php b/app/Http/Requests/UpdateSettingsRequest.php new file mode 100644 index 00000000..71e98ed7 --- /dev/null +++ b/app/Http/Requests/UpdateSettingsRequest.php @@ -0,0 +1,35 @@ + [ + 'required' + ], + 'settings.*' => [ + 'required' + ] + ]; + } +} diff --git a/app/Http/Requests/UserRequest.php b/app/Http/Requests/UserRequest.php new file mode 100644 index 00000000..1cd8b617 --- /dev/null +++ b/app/Http/Requests/UserRequest.php @@ -0,0 +1,59 @@ + [ + 'required' + ], + 'email' => [ + 'required', + 'email', + Rule::unique('users') + ], + 'phone' => [ + 'nullable' + ], + 'password' => [ + 'required', + 'min:8' + ] + ]; + + if ($this->getMethod() == 'PUT') { + $rules['email'] = [ + 'required', + 'email', + Rule::unique('users')->ignore($this->user) + ]; + $rules['password'] = [ + 'nullable', + 'min:8' + ]; + } + + return $rules; + } +} diff --git a/app/Invoice.php b/app/Invoice.php deleted file mode 100644 index 1e01f3ac..00000000 --- a/app/Invoice.php +++ /dev/null @@ -1,285 +0,0 @@ - 'integer', - 'tax' => 'integer', - 'sub_total' => 'integer', - 'discount' => 'float', - 'discount_val' => 'integer', - ]; - - protected $fillable = [ - 'invoice_date', - 'due_date', - 'invoice_number', - 'reference_number', - 'user_id', - 'company_id', - 'invoice_template_id', - 'status', - 'paid_status', - 'sub_total', - 'tax_per_item', - 'discount_per_item', - 'total', - 'discount', - 'discount_type', - 'discount_val', - 'due_amount', - 'tax', - 'notes', - 'unique_hash', - 'sent', - 'viewed' - ]; - - protected $appends = [ - 'formattedCreatedAt', - 'formattedInvoiceDate', - 'formattedDueDate' - ]; - - public static function getNextInvoiceNumber($value) - { - // Get the last created order - $lastOrder = Invoice::where('invoice_number', 'LIKE', $value . '-%') - ->orderBy('created_at', 'desc') - ->first(); - - - if (!$lastOrder) { - // We get here if there is no order at all - // If there is no number set it to 0, which will be 1 at the end. - $number = 0; - } else { - $number = explode("-",$lastOrder->invoice_number); - $number = $number[1]; - } - // If we have ORD000001 in the database then we only want the number - // So the substr returns this 000001 - - // Add the string in front and higher up the number. - // the %06d part makes sure that there are always 6 numbers in the string. - // so it adds the missing zero's when needed. - - return sprintf('%06d', intval($number) + 1); - } - - public function items() - { - return $this->hasMany('Crater\InvoiceItem'); - } - - public function taxes() - { - return $this->hasMany(Tax::class); - } - - public function payments() - { - return $this->hasMany(Payment::class); - } - - public function user() - { - return $this->belongsTo('Crater\User'); - } - - public function invoiceTemplate() - { - return $this->belongsTo(InvoiceTemplate::class); - } - - public function getPreviousStatus() - { - if ($this->due_date < Carbon::now()) { - return self::STATUS_OVERDUE; - } elseif ($this->viewed) { - return self::STATUS_VIEWED; - } elseif ($this->sent) { - return self::STATUS_SENT; - } else { - return self::STATUS_DRAFT; - } - } - - private function strposX($haystack, $needle, $number) - { - if ($number == '1') { - return strpos($haystack, $needle); - } elseif ($number > '1') { - return strpos( - $haystack, - $needle, - $this->strposX($haystack, $needle, $number - 1) + strlen($needle) - ); - } else { - return error_log('Error: Value for parameter $number is out of range'); - } - } - - public function getInvoiceNumAttribute() - { - $position = $this->strposX($this->invoice_number, "-", 1) + 1; - return substr($this->invoice_number, $position); - } - - public function getInvoicePrefixAttribute () { - $prefix = explode("-", $this->invoice_number)[0]; - return $prefix; - } - - public function getFormattedCreatedAtAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->created_at)->format($dateFormat); - } - - public function getFormattedDueDateAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->due_date)->format($dateFormat); - } - - public function getFormattedInvoiceDateAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->invoice_date)->format($dateFormat); - } - - public function currency() - { - return $this->belongsTo(Currency::class); - } - - public function scopeWhereStatus($query, $status) - { - return $query->where('invoices.status', $status); - } - - public function scopeWherePaidStatus($query, $status) - { - return $query->where('invoices.paid_status', $status); - } - - public function scopeWhereDueStatus($query, $status) - { - return $query->whereIn('invoices.paid_status', [ - self::STATUS_UNPAID, - self::STATUS_PARTIALLY_PAID - ]); - } - - public function scopeWhereInvoiceNumber($query, $invoiceNumber) - { - return $query->where('invoices.invoice_number', 'LIKE', '%'.$invoiceNumber.'%'); - } - - public function scopeInvoicesBetween($query, $start, $end) - { - return $query->whereBetween( - 'invoices.invoice_date', - [$start->format('Y-m-d'), $end->format('Y-m-d')] - ); - } - - public function scopeWhereSearch($query, $search) - { - foreach (explode(' ', $search) as $term) { - $query->whereHas('user', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%') - ->orWhere('contact_name', 'LIKE', '%'.$term.'%') - ->orWhere('company_name', 'LIKE', '%'.$term.'%'); - }); - } - } - - public function scopeWhereOrder($query, $orderByField, $orderBy) - { - $query->orderBy($orderByField, $orderBy); - } - - public function scopeApplyFilters($query, array $filters) - { - $filters = collect($filters); - if ($filters->get('search')) { - $query->whereSearch($filters->get('search')); - } - - if ($filters->get('status')) { - if ( - $filters->get('status') == self::STATUS_UNPAID || - $filters->get('status') == self::STATUS_PARTIALLY_PAID || - $filters->get('status') == self::STATUS_PAID - ) { - $query->wherePaidStatus($filters->get('status')); - } elseif ($filters->get('status') == self::STATUS_DUE) { - $query->whereDueStatus($filters->get('status')); - } else { - $query->whereStatus($filters->get('status')); - } - } - - if ($filters->get('paid_status')) { - $query->wherePaidStatus($filters->get('status')); - } - - if ($filters->get('invoice_number')) { - $query->whereInvoiceNumber($filters->get('invoice_number')); - } - - if ($filters->get('from_date') && $filters->get('to_date')) { - $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); - $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); - $query->invoicesBetween($start, $end); - } - - if ($filters->get('customer_id')) { - $query->whereCustomer($filters->get('customer_id')); - } - - if ($filters->get('orderByField') || $filters->get('orderBy')) { - $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'invoice_number'; - $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; - $query->whereOrder($field, $orderBy); - } - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('invoices.company_id', $company_id); - } - - public function scopeWhereCustomer($query, $customer_id) - { - $query->where('invoices.user_id', $customer_id); - } -} diff --git a/app/Jobs/CreateBackupJob.php b/app/Jobs/CreateBackupJob.php new file mode 100644 index 00000000..75fd176f --- /dev/null +++ b/app/Jobs/CreateBackupJob.php @@ -0,0 +1,61 @@ +data = $data; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $fileDisk = FileDisk::find($this->data['file_disk_id']); + $fileDisk->setConfig(); + + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + + config(['backup.backup.destination.disks' => [$prefix . $fileDisk->driver]]); + + $backupJob = BackupJobFactory::createFromArray(config('backup')); + + if ($this->data['option'] === 'only-db') { + $backupJob->dontBackupFilesystem(); + } + + if ($this->data['option'] === 'only-files') { + $backupJob->dontBackupDatabases(); + } + + if (! empty($this->data['option'])) { + $prefix = str_replace('_', '-', $this->data['option']).'-'; + + $backupJob->setFilename($prefix.date('Y-m-d-H-i-s').'.zip'); + } + + $backupJob->run(); + } +} diff --git a/app/Jobs/GenerateEstimatePdfJob.php b/app/Jobs/GenerateEstimatePdfJob.php new file mode 100644 index 00000000..8f7c792f --- /dev/null +++ b/app/Jobs/GenerateEstimatePdfJob.php @@ -0,0 +1,40 @@ +estimate = $estimate; + $this->deleteExistingFile = $deleteExistingFile; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $this->estimate->generatePDF('estimate', $this->estimate->estimate_number, $this->deleteExistingFile); + + return 0; + } +} diff --git a/app/Jobs/GenerateInvoicePdfJob.php b/app/Jobs/GenerateInvoicePdfJob.php new file mode 100644 index 00000000..9ca6f924 --- /dev/null +++ b/app/Jobs/GenerateInvoicePdfJob.php @@ -0,0 +1,40 @@ +invoice = $invoice; + $this->deleteExistingFile = $deleteExistingFile; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $this->invoice->generatePDF('invoice', $this->invoice->invoice_number, $this->deleteExistingFile); + + return 0; + } +} diff --git a/app/Jobs/GeneratePaymentPdfJob.php b/app/Jobs/GeneratePaymentPdfJob.php new file mode 100644 index 00000000..13a9342a --- /dev/null +++ b/app/Jobs/GeneratePaymentPdfJob.php @@ -0,0 +1,40 @@ +payment = $payment; + $this->deleteExistingFile = $deleteExistingFile; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $this->payment->generatePDF('payment', $this->payment->payment_number, $this->deleteExistingFile); + + return 0; + } +} diff --git a/app/Listeners/Updates/v1/Version110.php b/app/Listeners/Updates/v1/Version110.php index 96b47e2a..517fcd70 100644 --- a/app/Listeners/Updates/v1/Version110.php +++ b/app/Listeners/Updates/v1/Version110.php @@ -6,8 +6,8 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Crater\Events\UpdateFinished; use Crater\Listeners\Updates\Listener; -use Crater\Setting; -use Crater\Currency; +use Crater\Models\Setting; +use Crater\Models\Currency; class Version110 extends Listener { diff --git a/app/Listeners/Updates/v2/Version200.php b/app/Listeners/Updates/v2/Version200.php index 3782d7a2..ebf95bc5 100644 --- a/app/Listeners/Updates/v2/Version200.php +++ b/app/Listeners/Updates/v2/Version200.php @@ -7,8 +7,8 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Database\Schema\Blueprint; use Crater\Listeners\Updates\Listener; use Crater\Events\UpdateFinished; -use Crater\Setting; -use Crater\Address; +use Crater\Models\Setting; +use Crater\Models\Address; class Version200 extends Listener { @@ -58,7 +58,7 @@ class Version200 extends Listener $table->string('city')->nullable(); }); - $addresses = \Crater\Address::all(); + $addresses = \Crater\Models\Address::all(); foreach ($addresses as $add) { $city = \Crater\City::find($add->city_id); if($city) { diff --git a/app/Listeners/Updates/v2/Version201.php b/app/Listeners/Updates/v2/Version201.php index 58a14cdd..c8b16247 100644 --- a/app/Listeners/Updates/v2/Version201.php +++ b/app/Listeners/Updates/v2/Version201.php @@ -7,7 +7,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Database\Schema\Blueprint; use Crater\Events\UpdateFinished; use Crater\Listeners\Updates\Listener; -use Crater\Setting; +use Crater\Models\Setting; class Version201 extends Listener { diff --git a/app/Listeners/Updates/v2/Version202.php b/app/Listeners/Updates/v2/Version202.php index ed5be6b1..2c46eb77 100644 --- a/app/Listeners/Updates/v2/Version202.php +++ b/app/Listeners/Updates/v2/Version202.php @@ -6,7 +6,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Crater\Events\UpdateFinished; use Crater\Listeners\Updates\Listener; -use Crater\Setting; +use Crater\Models\Setting; class Version202 extends Listener { diff --git a/app/Listeners/Updates/v2/Version210.php b/app/Listeners/Updates/v2/Version210.php index b4227291..9a788b12 100644 --- a/app/Listeners/Updates/v2/Version210.php +++ b/app/Listeners/Updates/v2/Version210.php @@ -6,8 +6,8 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Crater\Events\UpdateFinished; use Crater\Listeners\Updates\Listener; -use Crater\Setting; -use Crater\CompanySetting; +use Crater\Models\Setting; +use Crater\Models\CompanySetting; class Version210 extends Listener { diff --git a/app/Listeners/Updates/v3/Version300.php b/app/Listeners/Updates/v3/Version300.php index db0d635c..4c8a935b 100644 --- a/app/Listeners/Updates/v3/Version300.php +++ b/app/Listeners/Updates/v3/Version300.php @@ -4,13 +4,13 @@ namespace Crater\Listeners\Updates\v3; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; -use Crater\Setting; -use Crater\Unit; -use Crater\PaymentMethod; -use Crater\Currency; -use Crater\Payment; -use Crater\Item; -use Crater\User; +use Crater\Models\Setting; +use Crater\Models\Unit; +use Crater\Models\PaymentMethod; +use Crater\Models\Currency; +use Crater\Models\Payment; +use Crater\Models\Item; +use Crater\Models\User; use Crater\Listeners\Updates\Listener; use Illuminate\Database\Schema\Blueprint; diff --git a/app/Listeners/Updates/v3/Version310.php b/app/Listeners/Updates/v3/Version310.php index e07adebe..ddce553a 100644 --- a/app/Listeners/Updates/v3/Version310.php +++ b/app/Listeners/Updates/v3/Version310.php @@ -7,8 +7,8 @@ use Illuminate\Queue\InteractsWithQueue; use Crater\Listeners\Updates\Listener; use Illuminate\Database\Schema\Blueprint; use Crater\Events\UpdateFinished; -use Crater\Setting; -use Crater\Currency; +use Crater\Models\Setting; +use Crater\Models\Currency; use Schema; use Artisan; diff --git a/app/Listeners/Updates/v3/Version311.php b/app/Listeners/Updates/v3/Version311.php index 1b2fdc67..8540d8b0 100644 --- a/app/Listeners/Updates/v3/Version311.php +++ b/app/Listeners/Updates/v3/Version311.php @@ -4,8 +4,8 @@ namespace Crater\Listeners\Updates\v3; use Crater\Listeners\Updates\Listener; use Crater\Events\UpdateFinished; -use Crater\Setting; -use Crater\Currency; +use Crater\Models\Setting; +use Crater\Models\Currency; use Artisan; class Version311 extends Listener diff --git a/app/Mail/EstimateViewed.php b/app/Mail/EstimateViewedMail.php similarity index 94% rename from app/Mail/EstimateViewed.php rename to app/Mail/EstimateViewedMail.php index 140ea461..5ffbd78f 100644 --- a/app/Mail/EstimateViewed.php +++ b/app/Mail/EstimateViewedMail.php @@ -7,7 +7,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; -class EstimateViewed extends Mailable +class EstimateViewedMail extends Mailable { use Queueable, SerializesModels; diff --git a/app/Mail/InvoiceViewed.php b/app/Mail/InvoiceViewedMail.php similarity index 94% rename from app/Mail/InvoiceViewed.php rename to app/Mail/InvoiceViewedMail.php index 48356b4d..3375dc96 100644 --- a/app/Mail/InvoiceViewed.php +++ b/app/Mail/InvoiceViewedMail.php @@ -7,7 +7,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; -class InvoiceViewed extends Mailable +class InvoiceViewedMail extends Mailable { use Queueable, SerializesModels; diff --git a/app/Mail/EstimatePdf.php b/app/Mail/SendEstimateMail.php similarity index 53% rename from app/Mail/EstimatePdf.php rename to app/Mail/SendEstimateMail.php index d89dddcf..888176f6 100644 --- a/app/Mail/EstimatePdf.php +++ b/app/Mail/SendEstimateMail.php @@ -1,12 +1,14 @@ data['company']['name']; + EmailLog::create([ + 'from' => $this->data['from'], + 'to' => $this->data['to'], + 'subject' => $this->data['subject'], + 'body' => $this->data['body'], + 'mailable_type' => Estimate::class, + 'mailable_id' => $this->data['estimate']['id'] + ]); - return $this->subject("Estimate from $company") + return $this->from($this->data['from']) + ->subject($this->data['subject']) ->markdown('emails.send.estimate', ['data', $this->data]); + } } diff --git a/app/Mail/InvoicePdf.php b/app/Mail/SendInvoiceMail.php similarity index 53% rename from app/Mail/InvoicePdf.php rename to app/Mail/SendInvoiceMail.php index e9dbd616..5e479f52 100644 --- a/app/Mail/InvoicePdf.php +++ b/app/Mail/SendInvoiceMail.php @@ -1,12 +1,14 @@ data['company']['name']; + EmailLog::create([ + 'from' => $this->data['from'], + 'to' => $this->data['to'], + 'subject' => $this->data['subject'], + 'body' => $this->data['body'], + 'mailable_type' => Invoice::class, + 'mailable_id' => $this->data['invoice']['id'] + ]); - return $this->subject("Invoice from $company") + return $this->from($this->data['from']) + ->subject($this->data['subject']) ->markdown('emails.send.invoice', ['data', $this->data]); } } diff --git a/app/Mail/PaymentPdf.php b/app/Mail/SendPaymentMail.php similarity index 53% rename from app/Mail/PaymentPdf.php rename to app/Mail/SendPaymentMail.php index 775ba0eb..edcbe372 100644 --- a/app/Mail/PaymentPdf.php +++ b/app/Mail/SendPaymentMail.php @@ -2,12 +2,14 @@ namespace Crater\Mail; +use Crater\Models\EmailLog; +use Crater\Models\Payment; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; -class PaymentPdf extends Mailable +class SendPaymentMail extends Mailable { use Queueable, SerializesModels; @@ -30,9 +32,18 @@ class PaymentPdf extends Mailable */ public function build() { - $company = $this->data['company']['name']; + EmailLog::create([ + 'from' => $this->data['from'], + 'to' => $this->data['to'], + 'subject' => $this->data['subject'], + 'body' => $this->data['body'], + 'mailable_type' => Payment::class, + 'mailable_id' => $this->data['payment']['id'] + ]); - return $this->subject("Payment from $company") + return $this->from($this->data['from']) + ->subject($this->data['subject']) ->markdown('emails.send.payment', ['data', $this->data]); + } } diff --git a/app/Models/Address.php b/app/Models/Address.php new file mode 100644 index 00000000..8fb8453e --- /dev/null +++ b/app/Models/Address.php @@ -0,0 +1,39 @@ +country ? $this->country->name : null; + + return $name; + } + + public function user() + { + return $this->belongsTo(User::class); + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function country() + { + return $this->belongsTo(Country::class); + } +} diff --git a/app/Company.php b/app/Models/Company.php similarity index 59% rename from app/Company.php rename to app/Models/Company.php index 0e81a0d6..f17aaba1 100644 --- a/app/Company.php +++ b/app/Models/Company.php @@ -1,15 +1,19 @@ hasMany(CompanySetting::class); } + + public function address() + { + return $this->hasOne(Address::class); + } } diff --git a/app/Models/CompanySetting.php b/app/Models/CompanySetting.php new file mode 100644 index 00000000..cbb09f6a --- /dev/null +++ b/app/Models/CompanySetting.php @@ -0,0 +1,63 @@ +belongsTo(Company::class); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('company_id', $company_id); + } + + public static function setSettings($settings, $company_id) + { + foreach ($settings as $key => $value) { + self::updateOrCreate( + [ + 'option' => $key, + 'company_id' => $company_id, + ], + [ + 'option' => $key, + 'company_id' => $company_id, + 'value' => $value + ] + ); + } + } + + public static function getSettings($settings, $company_id) + { + $settings = static::whereIn('option', $settings)->whereCompany($company_id)->get(); + $companySettings = []; + + foreach ($settings as $setting) { + $companySettings[$setting->option] = $setting->value; + } + + return $companySettings; + } + + public static function getSetting($key, $company_id) + { + $setting = static::whereOption($key)->whereCompany($company_id)->first(); + + if ($setting) { + return $setting->value; + } else { + return null; + } + } +} diff --git a/app/Country.php b/app/Models/Country.php similarity index 56% rename from app/Country.php rename to app/Models/Country.php index be3e962b..32883fea 100644 --- a/app/Country.php +++ b/app/Models/Country.php @@ -1,10 +1,14 @@ hasMany(Address::class); diff --git a/app/Currency.php b/app/Models/Currency.php similarity index 72% rename from app/Currency.php rename to app/Models/Currency.php index f3f30eeb..cf0030c6 100644 --- a/app/Currency.php +++ b/app/Models/Currency.php @@ -1,10 +1,13 @@ 'array' + ]; + + public function setDateAnswerAttribute($value) + { + if ($value && $value != null) { + $this->attributes['date_answer'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + + public function setTimeAnswerAttribute($value) + { + if ($value && $value != null) { + $this->attributes['time_answer'] = date("H:i:s", strtotime($value)); + } + } + + public function setDateTimeAnswerAttribute($value) + { + if ($value && $value != null) { + $this->attributes['date_time_answer'] = Carbon::createFromFormat('Y-m-d H:i', $value); + } + } + + public function setOptionsAttribute($value) + { + $this->attributes['options'] = json_encode($value); + } + + public function getDefaultAnswerAttribute() + { + $value_type = getCustomFieldValueKey($this->type); + + return $this->$value_type; + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function customFieldValue() + { + return $this->hasMany(CustomFieldValue::class); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('custom_fields.company_id', $company_id); + } + + public function scopeWhereSearch($query, $search) + { + $query->where(function ($query) use ($search) { + $query->where('label', 'LIKE', '%' . $search . '%') + ->orWhere('name', 'LIKE', '%' . $search . '%'); + }); + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('type')) { + $query->whereType($filters->get('type')); + } + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + } + + public function scopeWhereType($query, $type) + { + $query->where('custom_fields.model_type', $type); + } + + public static function createCustomField($request) + { + $data = $request->validated(); + $data[getCustomFieldValueKey($request->type)] = $request->default_answer; + $data['company_id'] = $request->header('company'); + $data['slug'] = clean_slug($request->model_type, $request->label); + + return CustomField::create($data); + } + + public function updateCustomField($request) + { + $oldSlug = $this->slug; + $data = $request->validated(); + $data[getCustomFieldValueKey($request->type)] = $request->default_answer; + $data['slug'] = clean_slug($request->model_type, $request->label, $this->id); + $this->update($data); + + if ($oldSlug !== $data['slug']) { + $settings = [ + 'invoice_company_address_format', + 'invoice_shipping_address_format', + 'invoice_billing_address_format', + 'estimate_company_address_format', + 'estimate_shipping_address_format', + 'estimate_billing_address_format', + 'payment_company_address_format', + 'payment_from_customer_address_format' + ]; + + $settings = CompanySetting::getSettings($settings, $this->company_id); + + foreach ($settings as $key => $value) { + $settings[$key] = str_replace($oldSlug, $data['slug'], $value); + } + + CompanySetting::setSettings($settings, $this->company_id); + } + + return $this; + } +} diff --git a/app/Models/CustomFieldValue.php b/app/Models/CustomFieldValue.php new file mode 100644 index 00000000..4b079168 --- /dev/null +++ b/app/Models/CustomFieldValue.php @@ -0,0 +1,59 @@ +attributes['date_answer'] = Carbon::createFromFormat('Y-m-d', $value); + } + + public function setTimeAnswerAttribute($value) + { + $this->attributes['time_answer'] = date("H:i:s", strtotime($value)); + } + + public function setDateTimeAnswerAttribute($value) + { + $this->attributes['date_time_answer'] = Carbon::createFromFormat('Y-m-d H:i', $value); + } + + public function getDefaultAnswerAttribute() + { + $value_type = getCustomFieldValueKey($this->type); + + return $this->$value_type; + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function customField() + { + return $this->belongsTo(CustomField::class); + } + + public function customFieldValuable() + { + return $this->morphTo(); + } +} diff --git a/app/Models/EmailLog.php b/app/Models/EmailLog.php new file mode 100644 index 00000000..89c4e742 --- /dev/null +++ b/app/Models/EmailLog.php @@ -0,0 +1,18 @@ +morphTo(); + } +} diff --git a/app/Models/Estimate.php b/app/Models/Estimate.php new file mode 100644 index 00000000..c5528a35 --- /dev/null +++ b/app/Models/Estimate.php @@ -0,0 +1,496 @@ + 'integer', + 'tax' => 'integer', + 'sub_total' => 'integer', + 'discount' => 'float', + 'discount_val' => 'integer', + ]; + + public function setEstimateDateAttribute($value) + { + if ($value) { + $this->attributes['estimate_date'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + + public function setExpiryDateAttribute($value) + { + if ($value) { + $this->attributes['expiry_date'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + + public function getEstimatePdfUrlAttribute() + { + return url('/estimates/pdf/' . $this->unique_hash); + } + + public static function getNextEstimateNumber($value) + { + // Get the last created order + $lastOrder = Estimate::where('estimate_number', 'LIKE', $value . '-%') + ->orderBy('created_at', 'desc') + ->first(); + + if (!$lastOrder) { + // We get here if there is no order at all + // If there is no number set it to 0, which will be 1 at the end. + $number = 0; + } else { + $number = explode("-", $lastOrder->estimate_number); + $number = $number[1]; + } + + // If we have ORD000001 in the database then we only want the number + // So the substr returns this 000001 + + // Add the string in front and higher up the number. + // the %05d part makes sure that there are always 6 numbers in the string. + // so it adds the missing zero's when needed. + + return sprintf('%06d', intval($number) + 1); + } + + public function emailLogs() + { + return $this->morphMany('App\Models\EmailLog', 'mailable'); + } + + public function items() + { + return $this->hasMany('Crater\Models\EstimateItem'); + } + + public function user() + { + return $this->belongsTo('Crater\Models\User', 'user_id'); + } + + public function creator() + { + return $this->belongsTo('Crater\Models\User', 'creator_id'); + } + + public function company() + { + return $this->belongsTo('Crater\Models\Company'); + } + + public function taxes() + { + return $this->hasMany(Tax::class); + } + + public function estimateTemplate() + { + return $this->belongsTo('Crater\Models\EstimateTemplate'); + } + + public function getEstimateNumAttribute() + { + $position = $this->strposX($this->estimate_number, "-", 1) + 1; + return substr($this->estimate_number, $position); + } + + public function getEstimatePrefixAttribute() + { + $prefix = explode("-", $this->estimate_number)[0]; + return $prefix; + } + + private function strposX($haystack, $needle, $number) + { + if ($number == '1') { + return strpos($haystack, $needle); + } elseif ($number > '1') { + return strpos( + $haystack, + $needle, + $this->strposX($haystack, $needle, $number - 1) + strlen($needle) + ); + } else { + return error_log('Error: Value for parameter $number is out of range'); + } + } + + public function getFormattedExpiryDateAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->expiry_date)->format($dateFormat); + } + + public function getFormattedEstimateDateAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->estimate_date)->format($dateFormat); + } + + public function scopeEstimatesBetween($query, $start, $end) + { + return $query->whereBetween( + 'estimates.estimate_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ); + } + + public function scopeWhereStatus($query, $status) + { + return $query->where('estimates.status', $status); + } + + public function scopeWhereEstimateNumber($query, $estimateNumber) + { + return $query->where('estimates.estimate_number', $estimateNumber); + } + + public function scopeWhereEstimate($query, $estimate_id) + { + $query->orWhere('id', $estimate_id); + } + + public function scopeWhereSearch($query, $search) + { + foreach (explode(' ', $search) as $term) { + $query->whereHas('user', function ($query) use ($term) { + $query->where('name', 'LIKE', '%' . $term . '%') + ->orWhere('contact_name', 'LIKE', '%' . $term . '%') + ->orWhere('company_name', 'LIKE', '%' . $term . '%'); + }); + } + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + + if ($filters->get('estimate_number')) { + $query->whereEstimateNumber($filters->get('estimate_number')); + } + + if ($filters->get('status')) { + $query->whereStatus($filters->get('status')); + } + + if ($filters->get('estimate_id')) { + $query->whereEstimate($filters->get('estimate_id')); + } + + if ($filters->get('from_date') && $filters->get('to_date')) { + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); + $query->estimatesBetween($start, $end); + } + + if ($filters->get('customer_id')) { + $query->whereCustomer($filters->get('customer_id')); + } + + if ($filters->get('orderByField') || $filters->get('orderBy')) { + $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'estimate_number'; + $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; + $query->whereOrder($field, $orderBy); + } + } + + public function scopeWhereOrder($query, $orderByField, $orderBy) + { + $query->orderBy($orderByField, $orderBy); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('estimates.company_id', $company_id); + } + + public function scopeWhereCustomer($query, $customer_id) + { + $query->where('estimates.user_id', $customer_id); + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + + public static function createEstimate($request) + { + $data = $request->except(['items', 'taxes']); + + $data['creator_id'] = Auth::id(); + $data['status'] = self::STATUS_DRAFT; + $data['unique_hash'] = str_random(60); + $data['company_id'] = $request->header('company'); + + $data['tax_per_item'] = CompanySetting::getSetting( + 'tax_per_item', + $request->header('company') + ) ?? 'NO'; + + $data['discount_per_item'] = CompanySetting::getSetting( + 'discount_per_item', + $request->header('company') + ) ?? 'NO'; + + if ($request->has('estimateSend')) { + $data['status'] = self::STATUS_SENT; + } + + $estimate = self::create($data); + $estimate->unique_hash = Hashids::connection(Estimate::class)->encode($estimate->id); + $estimate->save(); + + self::createItems($estimate, $request); + + if ($request->has('taxes') && (!empty($request->taxes))) { + self::createTaxes($estimate, $request); + } + + $customFields = $request->customFields; + + if ($customFields) { + $estimate->addCustomFields($customFields); + } + + return Estimate::with([ + 'items.taxes', + 'user', + 'estimateTemplate', + 'taxes' + ]) + ->find($estimate->id); + } + + public function updateEstimate($request) + { + $data = $request->except(['items', 'taxes']); + + $this->update($data); + + $this->items()->delete(); + $this->taxes()->delete(); + + self::createItems($this, $request); + + if ($request->has('taxes') && (!empty($request->taxes))) { + self::createTaxes($this, $request); + } + + if ($request->customFields) { + $this->updateCustomFields($request->customFields); + } + + return Estimate::with([ + 'items.taxes', + 'user', + 'estimateTemplate', + 'taxes' + ]) + ->find($this->id); + } + + public static function createItems($estimate, $request) + { + $estimateItems = $request->items; + + foreach ($estimateItems as $estimateItem) { + $estimateItem['company_id'] = $request->header('company'); + $item = $estimate->items()->create($estimateItem); + + if (array_key_exists('taxes', $estimateItem) && $estimateItem['taxes']) { + foreach ($estimateItem['taxes'] as $tax) { + if (gettype($tax['amount']) !== "NULL") { + $tax['company_id'] = $request->header('company'); + $item->taxes()->create($tax); + } + } + } + } + } + + public static function createTaxes($estimate, $request) + { + $estimateTaxes = $request->taxes; + + foreach ($estimateTaxes as $tax) { + if (gettype($tax['amount']) !== "NULL") { + $tax['company_id'] = $request->header('company'); + $estimate->taxes()->create($tax); + } + } + } + + public function send($data) + { + $data['estimate'] = $this->toArray(); + $data['user'] = $this->user->toArray(); + $data['company'] = $this->company->toArray(); + $data['body'] = $this->getEmailBody($data['body']); + + \Mail::to($data['to'])->send(new SendEstimateMail($data)); + + if ($this->status == Estimate::STATUS_DRAFT) { + $this->status = Estimate::STATUS_SENT; + $this->save(); + } + + return [ + 'success' => true + ]; + } + + public function getPDFData() + { + $taxTypes = []; + $taxes = []; + $labels = []; + + if ($this->tax_per_item === 'YES') { + foreach ($this->items as $item) { + foreach ($item->taxes as $tax) { + if (!in_array($tax->name, $taxTypes)) { + array_push($taxTypes, $tax->name); + array_push($labels, $tax->name . ' (' . $tax->percent . '%)'); + } + } + } + + foreach ($taxTypes as $taxType) { + $total = 0; + + foreach ($this->items as $item) { + foreach ($item->taxes as $tax) { + if ($tax->name == $taxType) { + $total += $tax->amount; + } + } + } + + array_push($taxes, $total); + } + } + + $estimateTemplate = EstimateTemplate::find($this->estimate_template_id); + + $company = Company::find($this->company_id); + $logo = $company->getMedia('logo')->first(); + + if ($logo) { + $logo = $logo->getFullUrl(); + } + + view()->share([ + 'estimate' => $this, + 'logo' => $logo ?? null, + 'company_address' => $this->getCompanyAddress(), + 'shipping_address' => $this->getCustomerShippingAddress(), + 'billing_address' => $this->getCustomerBillingAddress(), + 'notes' => $this->getNotes(), + 'labels' => $labels, + 'taxes' => $taxes + ]); + + return PDF::loadView('app.pdf.estimate.' . $estimateTemplate->view); + } + + public function getCompanyAddress() + { + $format = CompanySetting::getSetting('estimate_company_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getCustomerShippingAddress() + { + $format = CompanySetting::getSetting('estimate_shipping_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getCustomerBillingAddress() + { + $format = CompanySetting::getSetting('estimate_billing_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getNotes() + { + return $this->getFormattedString($this->notes); + } + + public function getEmailBody($body) + { + $values = array_merge($this->getFieldsArray(), $this->getExtraFields()); + + $body = strtr($body, $values); + + return preg_replace('/{(.*?)}/', '', $body); + } + + public function getExtraFields() + { + return [ + '{ESTIMATE_DATE}' => $this->formattedEstimateDate, + '{ESTIMATE_EXPIRY_DATE}' => $this->formattedExpiryDate, + '{ESTIMATE_NUMBER}' => $this->estimate_number, + '{ESTIMATE_REF_NUMBER}' => $this->reference_number, + '{ESTIMATE_LINK}' => url('/customer/estimates/pdf/' . $this->unique_hash) + ]; + } +} diff --git a/app/EstimateItem.php b/app/Models/EstimateItem.php similarity index 84% rename from app/EstimateItem.php rename to app/Models/EstimateItem.php index 640c8108..74373545 100644 --- a/app/EstimateItem.php +++ b/app/Models/EstimateItem.php @@ -1,10 +1,15 @@ attributes['expense_date'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + public function category() { return $this->belongsTo(ExpenseCategory::class, 'expense_category_id'); @@ -36,7 +41,12 @@ class Expense extends Model implements HasMedia public function user() { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class, 'user_id'); + } + + public function creator() + { + return $this->belongsTo('Crater\Models\User', 'creator_id'); } public function getFormattedExpenseDateAttribute($value) @@ -54,7 +64,7 @@ class Expense extends Model implements HasMedia public function getReceiptAttribute($value) { $media = $this->getFirstMedia('receipts'); - if($media) { + if ($media) { return $media->getPath(); } @@ -73,14 +83,14 @@ class Expense extends Model implements HasMedia { foreach (explode(' ', $search) as $term) { $query->whereHas('category', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%'); + $query->where('name', 'LIKE', '%' . $term . '%'); }); } } public function scopeWhereNotes($query, $search) { - $query->where('notes', 'LIKE', '%'.$search.'%'); + $query->where('notes', 'LIKE', '%' . $search . '%'); } public function scopeWhereCategory($query, $categoryId) @@ -105,9 +115,13 @@ class Expense extends Model implements HasMedia $query->whereUser($filters->get('user_id')); } + if ($filters->get('expense_id')) { + $query->whereExpense($filters->get('expense_id')); + } + if ($filters->get('from_date') && $filters->get('to_date')) { - $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); - $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); $query->expensesBetween($start, $end); } @@ -122,13 +136,18 @@ class Expense extends Model implements HasMedia } } + public function scopeWhereExpense($query, $expense_id) + { + $query->orWhere('id', $expense_id); + } + public function scopeWhereSearch($query, $search) { foreach (explode(' ', $search) as $term) { $query->whereHas('category', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%'); + $query->where('name', 'LIKE', '%' . $term . '%'); }) - ->orWhere('notes', 'LIKE', '%'.$term.'%'); + ->orWhere('notes', 'LIKE', '%' . $term . '%'); } } @@ -142,15 +161,62 @@ class Expense extends Model implements HasMedia $query->where('expenses.company_id', $company_id); } + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + public function scopeExpensesAttributes($query) { $query->select( DB::raw(' count(*) as expenses_count, sum(amount) as total_amount, - expense_category_id' - ) + expense_category_id') ) - ->groupBy('expense_category_id'); + ->groupBy('expense_category_id'); + } + + public static function createExpense($request) + { + $data = $request->validated(); + $data['creator_id'] = Auth::id(); + $data['company_id'] = $request->header('company'); + + $expense = self::create($data); + + if ($request->hasFile('attachment_receipt')) { + $expense->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local'); + } + + $customFields = json_decode($request->customFields, true); + + if ($customFields) { + $expense->addCustomFields($customFields); + } + + return $expense; + } + + public function updateExpense($request) + { + $this->update($request->validated()); + + if ($request->hasFile('attachment_receipt')) { + $this->clearMediaCollection('receipts'); + $this->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local'); + } + + $customFields = json_decode($request->customFields, true); + + if ($customFields) { + $this->updateCustomFields($customFields); + } + + return true; } } diff --git a/app/Models/ExpenseCategory.php b/app/Models/ExpenseCategory.php new file mode 100644 index 00000000..326c3a97 --- /dev/null +++ b/app/Models/ExpenseCategory.php @@ -0,0 +1,78 @@ +hasMany(Expense::class); + } + + public function getFormattedCreatedAtAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->created_at)->format($dateFormat); + } + + public function getAmountAttribute() + { + return $this->expenses()->sum('amount'); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('company_id', $company_id); + } + + public function scopeWhereCategory($query, $category_id) + { + $query->orWhere('id', $category_id); + } + + public function scopeWhereSearch($query, $search) + { + $query->where('name', 'LIKE', '%' . $search . '%'); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('category_id')) { + $query->whereCategory($filters->get('category_id')); + } + + if ($filters->get('company_id')) { + $query->whereCompany($filters->get('company_id')); + } + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } +} diff --git a/app/Models/FileDisk.php b/app/Models/FileDisk.php new file mode 100644 index 00000000..6587bf8c --- /dev/null +++ b/app/Models/FileDisk.php @@ -0,0 +1,187 @@ +attributes['credentials'] = json_encode($value); + } + + public function scopeWhereOrder($query, $orderByField, $orderBy) + { + $query->orderBy($orderByField, $orderBy); + } + + public function scopeFileDisksBetween($query, $start, $end) + { + return $query->whereBetween( + 'file_disks.created_at', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ); + } + + public function scopeWhereSearch($query, $search) + { + foreach (explode(' ', $search) as $term) { + $query->where('name', 'LIKE', '%' . $term . '%') + ->orWhere('driver', 'LIKE', '%' . $term . '%'); + } + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + return $query->paginate($limit); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + + if ($filters->get('from_date') && $filters->get('to_date')) { + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); + $query->fileDisksBetween($start, $end); + } + + if ($filters->get('orderByField') || $filters->get('orderBy')) { + $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'invoice_number'; + $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; + $query->whereOrder($field, $orderBy); + } + } + + public function setConfig() + { + $driver = $this->driver; + + $credentials = collect(json_decode($this['credentials'])); + + self::setFilesystem($credentials, $driver); + } + + public function setAsDefault() + { + return $this->set_as_default; + } + + public static function setFilesystem($credentials, $driver) + { + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + + config(['filesystems.default' => $prefix . $driver]); + + $disks = config('filesystems.disks.' . $driver); + + foreach ($disks as $key => $value) { + + if ($credentials->has($key)) { + $disks[$key] = $credentials[$key]; + } + } + + config(['filesystems.disks.' . $prefix . $driver => $disks]); + } + + public static function validateCredentials($credentials, $disk) + { + $exists = false; + + self::setFilesystem(collect($credentials), $disk); + + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + + try { + $root = ''; + if($disk == 'dropbox'){ + $root = $credentials['root'].'/'; + } + \Storage::disk($prefix . $disk)->put($root.'crater_temp.text', 'Check Credentials'); + + if(\Storage::disk($prefix . $disk)->exists($root.'crater_temp.text')) { + $exists = true; + \Storage::disk($prefix . $disk)->delete($root.'crater_temp.text'); + } + } catch(\Exception $e) { + $exists = false; + } + + return $exists; + } + + public static function createDisk($request) + { + if ($request->set_as_default) { + self::updateDefaultDisks(); + } + + $disk = self::create([ + 'credentials' => $request->credentials, + 'name' => $request->name, + 'driver' => $request->driver, + 'set_as_default' => $request->set_as_default, + ]); + + return $disk; + } + + public static function updateDefaultDisks() + { + $disks = self::get(); + + foreach ($disks as $disk) { + $disk->set_as_default = false; + $disk->save(); + } + + return true; + } + + public function updateDisk($request) + { + $data = [ + 'credentials' => $request->credentials, + 'name' => $request->name, + 'driver' => $request->driver, + ]; + + if(!$this->setAsDefault()) { + if ($request->set_as_default) { + self::updateDefaultDisks(); + } + + $data['set_as_default'] = $request->set_as_default; + } + + $this->update($data); + + return $this; + } + + public function setAsDefaultDisk() + { + self::updateDefaultDisks(); + + $this->set_as_default = true; + $this->save(); + + return $this; + } +} diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php new file mode 100644 index 00000000..668c2ac8 --- /dev/null +++ b/app/Models/Invoice.php @@ -0,0 +1,580 @@ + 'integer', + 'tax' => 'integer', + 'sub_total' => 'integer', + 'discount' => 'float', + 'discount_val' => 'integer', + ]; + + protected $guarded = [ + 'id' + ]; + + protected $appends = [ + 'formattedCreatedAt', + 'formattedInvoiceDate', + 'formattedDueDate', + 'invoicePdfUrl' + ]; + + public function setInvoiceDateAttribute($value) + { + if ($value) { + $this->attributes['invoice_date'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + + public function setDueDateAttribute($value) + { + if ($value) { + $this->attributes['due_date'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + + public static function getNextInvoiceNumber($value) + { + // Get the last created order + $lastOrder = Invoice::where('invoice_number', 'LIKE', $value . '-%') + ->orderBy('created_at', 'desc') + ->first(); + + + if (!$lastOrder) { + // We get here if there is no order at all + // If there is no number set it to 0, which will be 1 at the end. + $number = 0; + } else { + $number = explode("-", $lastOrder->invoice_number); + $number = $number[1]; + } + // If we have ORD000001 in the database then we only want the number + // So the substr returns this 000001 + + // Add the string in front and higher up the number. + // the %06d part makes sure that there are always 6 numbers in the string. + // so it adds the missing zero's when needed. + + return sprintf('%06d', intval($number) + 1); + } + + public function emailLogs() + { + return $this->morphMany('App\Models\EmailLog', 'mailable'); + } + + public function items() + { + return $this->hasMany('Crater\Models\InvoiceItem'); + } + + public function taxes() + { + return $this->hasMany(Tax::class); + } + + public function payments() + { + return $this->hasMany(Payment::class); + } + + public function currency() + { + return $this->belongsTo(Currency::class); + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function user() + { + return $this->belongsTo('Crater\Models\User', 'user_id'); + } + + public function creator() + { + return $this->belongsTo('Crater\Models\User', 'creator_id'); + } + + public function invoiceTemplate() + { + return $this->belongsTo(InvoiceTemplate::class); + } + + public function getInvoicePdfUrlAttribute() + { + return url('/invoices/pdf/' . $this->unique_hash); + } + + public function getPreviousStatus() + { + if ($this->due_date < Carbon::now()) { + return self::STATUS_OVERDUE; + } elseif ($this->viewed) { + return self::STATUS_VIEWED; + } elseif ($this->sent) { + return self::STATUS_SENT; + } else { + return self::STATUS_DRAFT; + } + } + + private function strposX($haystack, $needle, $number) + { + if ($number == '1') { + return strpos($haystack, $needle); + } elseif ($number > '1') { + return strpos( + $haystack, + $needle, + $this->strposX($haystack, $needle, $number - 1) + strlen($needle) + ); + } else { + return error_log('Error: Value for parameter $number is out of range'); + } + } + + public function getInvoiceNumAttribute() + { + $position = $this->strposX($this->invoice_number, "-", 1) + 1; + return substr($this->invoice_number, $position); + } + + public function getInvoicePrefixAttribute() + { + $prefix = explode("-", $this->invoice_number)[0]; + return $prefix; + } + + public function getFormattedCreatedAtAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->created_at)->format($dateFormat); + } + + public function getFormattedDueDateAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->due_date)->format($dateFormat); + } + + public function getFormattedInvoiceDateAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->invoice_date)->format($dateFormat); + } + + public function scopeWhereStatus($query, $status) + { + return $query->where('invoices.status', $status); + } + + public function scopeWherePaidStatus($query, $status) + { + return $query->where('invoices.paid_status', $status); + } + + public function scopeWhereDueStatus($query, $status) + { + return $query->whereIn('invoices.paid_status', [ + self::STATUS_UNPAID, + self::STATUS_PARTIALLY_PAID + ]); + } + + public function scopeWhereInvoiceNumber($query, $invoiceNumber) + { + return $query->where('invoices.invoice_number', 'LIKE', '%' . $invoiceNumber . '%'); + } + + public function scopeInvoicesBetween($query, $start, $end) + { + return $query->whereBetween( + 'invoices.invoice_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ); + } + + public function scopeWhereSearch($query, $search) + { + foreach (explode(' ', $search) as $term) { + $query->whereHas('user', function ($query) use ($term) { + $query->where('name', 'LIKE', '%' . $term . '%') + ->orWhere('contact_name', 'LIKE', '%' . $term . '%') + ->orWhere('company_name', 'LIKE', '%' . $term . '%'); + }); + } + } + + public function scopeWhereOrder($query, $orderByField, $orderBy) + { + $query->orderBy($orderByField, $orderBy); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + + if ($filters->get('status')) { + if ( + $filters->get('status') == self::STATUS_UNPAID || + $filters->get('status') == self::STATUS_PARTIALLY_PAID || + $filters->get('status') == self::STATUS_PAID + ) { + $query->wherePaidStatus($filters->get('status')); + } elseif ($filters->get('status') == self::STATUS_DUE) { + $query->whereDueStatus($filters->get('status')); + } else { + $query->whereStatus($filters->get('status')); + } + } + + if ($filters->get('paid_status')) { + $query->wherePaidStatus($filters->get('status')); + } + + if ($filters->get('invoice_id')) { + $query->whereInvoice($filters->get('invoice_id')); + } + + if ($filters->get('invoice_number')) { + $query->whereInvoiceNumber($filters->get('invoice_number')); + } + + if ($filters->get('from_date') && $filters->get('to_date')) { + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); + $query->invoicesBetween($start, $end); + } + + if ($filters->get('customer_id')) { + $query->whereCustomer($filters->get('customer_id')); + } + + if ($filters->get('orderByField') || $filters->get('orderBy')) { + $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'invoice_number'; + $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; + $query->whereOrder($field, $orderBy); + } + } + + public function scopeWhereInvoice($query, $invoice_id) + { + $query->orWhere('id', $invoice_id); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('invoices.company_id', $company_id); + } + + public function scopeWhereCustomer($query, $customer_id) + { + $query->where('invoices.user_id', $customer_id); + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + + public static function createInvoice($request) + { + $data = $request->except('items', 'taxes'); + + $data['creator_id'] = Auth::id(); + $data['status'] = Invoice::STATUS_DRAFT; + $data['company_id'] = $request->header('company'); + $data['paid_status'] = Invoice::STATUS_UNPAID; + $data['tax_per_item'] = CompanySetting::getSetting('tax_per_item', $request->header('company')) ?? 'NO '; + $data['discount_per_item'] = CompanySetting::getSetting('discount_per_item', $request->header('company')) ?? 'NO'; + $data['due_amount'] = $request->total; + + if ($request->has('invoiceSend')) { + $data['status'] = Invoice::STATUS_SENT; + } + + $invoice = Invoice::create($data); + $invoice->unique_hash = Hashids::connection(Invoice::class)->encode($invoice->id); + $invoice->save(); + + self::createItems($invoice, $request); + + if ($request->has('taxes') && (!empty($request->taxes))) { + self::createTaxes($invoice, $request); + } + + if ($request->customFields) { + $invoice->addCustomFields($request->customFields); + } + + $invoice = Invoice::with([ + 'items', + 'user', + 'invoiceTemplate', + 'taxes' + ]) + ->find($invoice->id); + + return $invoice; + } + + public function updateInvoice($request) + { + $data = $request->except('items'); + $oldAmount = $this->total; + + if ($oldAmount != $request->total) { + $oldAmount = (int) round($request->total) - (int) $oldAmount; + } else { + $oldAmount = 0; + } + + $data['due_amount'] = ($this->due_amount + $oldAmount); + + if ($data['due_amount'] == 0 && $this->paid_status != Invoice::STATUS_PAID) { + $data['status'] = Invoice::STATUS_COMPLETED; + $data['paid_status'] = Invoice::STATUS_PAID; + } elseif ($this->due_amount < 0 && $this->paid_status != Invoice::STATUS_UNPAID) { + return response()->json([ + 'error' => 'invalid_due_amount' + ]); + } elseif ($data['due_amount'] != 0 && $this->paid_status == Invoice::STATUS_PAID) { + $data['status'] = $this->getPreviousStatus(); + $data['paid_status'] = Invoice::STATUS_PARTIALLY_PAID; + } + + $this->update($data); + + + $this->items()->delete(); + $this->taxes()->delete(); + + self::createItems($this, $request); + + if ($request->has('taxes') && (!empty($request->taxes))) { + self::createTaxes($this, $request); + } + + if ($request->customFields) { + $this->updateCustomFields($request->customFields); + } + + $invoice = Invoice::with([ + 'items', + 'user', + 'invoiceTemplate', + 'taxes' + ]) + ->find($this->id); + + return $invoice; + } + + public function send($data) + { + $data['invoice'] = $this->toArray(); + $data['user'] = $this->user->toArray(); + $data['company'] = Company::find($this->company_id); + $data['body'] = $this->getEmailBody($data['body']); + + if ($this->status == Invoice::STATUS_DRAFT) { + $this->status = Invoice::STATUS_SENT; + $this->sent = true; + $this->save(); + } + + \Mail::to($data['to'])->send(new SendInvoiceMail($data)); + + return [ + 'success' => true + ]; + } + + public static function createItems($invoice, $request) + { + $invoiceItems = $request->items; + + foreach ($invoiceItems as $invoiceItem) { + $invoiceItem['company_id'] = $request->header('company'); + $item = $invoice->items()->create($invoiceItem); + + if (array_key_exists('taxes', $invoiceItem) && $invoiceItem['taxes']) { + foreach ($invoiceItem['taxes'] as $tax) { + $tax['company_id'] = $request->header('company'); + if (gettype($tax['amount']) !== "NULL") { + $item->taxes()->create($tax); + } + } + } + } + } + + public static function createTaxes($invoice, $request) + { + if ($request->has('taxes') && (!empty($request->taxes))) { + foreach ($request->taxes as $tax) { + $tax['company_id'] = $request->header('company'); + + if (gettype($tax['amount']) !== "NULL") { + $invoice->taxes()->create($tax); + } + } + } + } + + public function getPDFData() + { + $taxTypes = []; + $taxes = []; + $labels = []; + + if ($this->tax_per_item === 'YES') { + foreach ($this->items as $item) { + foreach ($item->taxes as $tax) { + if (!in_array($tax->name, $taxTypes)) { + array_push($taxTypes, $tax->name); + array_push($labels, $tax->name . ' (' . $tax->percent . '%)'); + } + } + } + + foreach ($taxTypes as $taxType) { + $total = 0; + + foreach ($this->items as $item) { + foreach ($item->taxes as $tax) { + if ($tax->name == $taxType) { + $total += $tax->amount; + } + } + } + + array_push($taxes, $total); + } + } + + $invoiceTemplate = InvoiceTemplate::find($this->invoice_template_id); + + $company = Company::find($this->company_id); + + $logo = $company->getMedia('logo')->first(); + + if ($logo) { + $logo = $logo->getFullUrl(); + } + + view()->share([ + 'invoice' => $this, + 'company_address' => $this->getCompanyAddress(), + 'shipping_address' => $this->getCustomerShippingAddress(), + 'billing_address' => $this->getCustomerBillingAddress(), + 'notes' => $this->getNotes(), + 'logo' => $logo ?? null, + 'labels' => $labels, + 'taxes' => $taxes + ]); + + return PDF::loadView('app.pdf.invoice.' . $invoiceTemplate->view); + } + + public function getCompanyAddress() + { + $format = CompanySetting::getSetting('invoice_company_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getCustomerShippingAddress() + { + $format = CompanySetting::getSetting('invoice_shipping_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getCustomerBillingAddress() + { + $format = CompanySetting::getSetting('invoice_billing_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getNotes() + { + return $this->getFormattedString($this->notes); + } + + public function getEmailBody($body) + { + $values = array_merge($this->getFieldsArray(), $this->getExtraFields()); + + $body = strtr($body, $values); + + return preg_replace('/{(.*?)}/', '', $body); + } + + public function getExtraFields() + { + return [ + '{INVOICE_DATE}' => $this->formattedInvoiceDate, + '{INVOICE_DUE_DATE}' => $this->formattedDueDate, + '{INVOICE_NUMBER}' => $this->invoice_number, + '{INVOICE_REF_NUMBER}' => $this->reference_number, + '{INVOICE_LINK}' => url('/customer/invoices/pdf/' . $this->unique_hash) + ]; + } +} diff --git a/app/InvoiceItem.php b/app/Models/InvoiceItem.php similarity index 85% rename from app/InvoiceItem.php rename to app/Models/InvoiceItem.php index 1f01980d..b024708b 100644 --- a/app/InvoiceItem.php +++ b/app/Models/InvoiceItem.php @@ -1,16 +1,18 @@ get('from_date') && $filters->get('to_date')) { - $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); - $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); $query->invoicesBetween($start, $end); } } @@ -81,6 +83,5 @@ class InvoiceItem extends Model $query->select( DB::raw('sum(quantity) as total_quantity, sum(total) as total_amount, invoice_items.name') )->groupBy('invoice_items.name'); - } } diff --git a/app/InvoiceTemplate.php b/app/Models/InvoiceTemplate.php similarity index 71% rename from app/InvoiceTemplate.php rename to app/Models/InvoiceTemplate.php index 91f78240..18bb1514 100644 --- a/app/InvoiceTemplate.php +++ b/app/Models/InvoiceTemplate.php @@ -1,11 +1,14 @@ 'integer' @@ -29,6 +30,11 @@ class Item extends Model return $this->belongsTo(Unit::class); } + public function creator() + { + return $this->belongsTo('Crater\Models\User', 'creator_id'); + } + public function scopeWhereSearch($query, $search) { return $query->where('items.name', 'LIKE', '%'.$search.'%'); @@ -49,6 +55,11 @@ class Item extends Model $query->orderBy($orderByField, $orderBy); } + public function scopeWhereItem($query, $item_id) + { + $query->orWhere('id', $item_id); + } + public function scopeApplyFilters($query, array $filters) { $filters = collect($filters); @@ -65,6 +76,10 @@ class Item extends Model $query->whereUnit($filters->get('unit_id')); } + if ($filters->get('item_id')) { + $query->whereItem($filters->get('item_id')); + } + if ($filters->get('orderByField') || $filters->get('orderBy')) { $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'name'; $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; @@ -72,6 +87,15 @@ class Item extends Model } } + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + public function getFormattedCreatedAtAttribute($value) { $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); @@ -80,7 +104,9 @@ class Item extends Model public function taxes() { - return $this->hasMany(Tax::class); + return $this->hasMany(Tax::class) + ->where('invoice_item_id', NULL) + ->where('estimate_item_id', NULL); } public function scopeWhereCompany($query, $company_id) @@ -95,27 +121,41 @@ class Item extends Model public function estimateItems() { - return $this->hasMany(EstimateItem::class); + return $this->hasMany( EstimateItem::class); } - public static function deleteItem($id) + public static function createItem($request) { - $item = Item::find($id); + $data = $request->validated(); + $data['company_id'] = $request->header('company'); + $data['creator_id'] = Auth::id(); + $item = self::create($data); - if ($item->taxes()->exists() && $item->taxes()->count() > 0) { - return false; + if ($request->has('taxes')) { + foreach ($request->taxes as $tax) { + $tax['company_id'] = $request->header('company'); + $item->taxes()->create($tax); + } } - if ($item->invoiceItems()->exists() && $item->invoiceItems()->count() > 0) { - return false; + $item = self::with('taxes')->find($item->id); + + return $item; + } + + public function updateItem($request) + { + $this->update($request->validated()); + + $this->taxes()->delete(); + + if ($request->has('taxes')) { + foreach ($request->taxes as $tax) { + $tax['company_id'] = $request->header('company'); + $this->taxes()->create($tax); + } } - if ($item->estimateItems()->exists() && $item->estimateItems()->count() > 0) { - return false; - } - - $item->delete(); - - return true; + return Item::with('taxes')->find($this->id); } } diff --git a/app/Models/Note.php b/app/Models/Note.php new file mode 100644 index 00000000..a382805e --- /dev/null +++ b/app/Models/Note.php @@ -0,0 +1,36 @@ +get('type')) { + $query->whereType($filters->get('type')); + } + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + } + + public function scopeWhereSearch($query, $search) + { + $query->where('name', 'LIKE', '%' . $search . '%'); + } + + public function scopeWhereType($query, $type) + { + return $query->where('type', $type); + } +} diff --git a/app/Models/Payment.php b/app/Models/Payment.php new file mode 100644 index 00000000..c9ff59a1 --- /dev/null +++ b/app/Models/Payment.php @@ -0,0 +1,431 @@ +attributes['payment_date'] = Carbon::createFromFormat('Y-m-d', $value); + } + } + + public function getPaymentPrefixAttribute() + { + $prefix = explode("-", $this->payment_number)[0]; + return $prefix; + } + + public function getFormattedCreatedAtAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->created_at)->format($dateFormat); + } + + public function getFormattedPaymentDateAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->payment_date)->format($dateFormat); + } + + public function getPaymentPdfUrlAttribute() + { + return url('/payments/pdf/' . $this->unique_hash); + } + + public function getPaymentNumAttribute() + { + $position = $this->strposX($this->payment_number, "-", 1) + 1; + return substr($this->payment_number, $position); + } + + public function emailLogs() + { + return $this->morphMany('App\Models\EmailLog', 'mailable'); + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function invoice() + { + return $this->belongsTo(Invoice::class); + } + + public function user() + { + return $this->belongsTo(User::class, 'user_id'); + } + + public function creator() + { + return $this->belongsTo('Crater\Models\User', 'creator_id'); + } + + public function paymentMethod() + { + return $this->belongsTo(PaymentMethod::class); + } + + public function send($data) + { + $data['payment'] = $this->toArray(); + $data['user'] = $this->user->toArray(); + $data['company'] = Company::find($this->company_id); + $data['body'] = $this->getEmailBody($data['body']); + + \Mail::to($data['to'])->send(new SendPaymentMail($data)); + + return [ + 'success' => true + ]; + } + + public static function createPayment($request) + { + $data = $request->validated(); + + $data['company_id'] = $request->header('company'); + $data['creator_id'] = Auth::id(); + + if ($request->has('invoice_id') && $request->invoice_id != null) { + $invoice = Invoice::find($request->invoice_id); + if ($invoice && $invoice->due_amount == $request->amount) { + $invoice->status = Invoice::STATUS_COMPLETED; + $invoice->paid_status = Invoice::STATUS_PAID; + $invoice->due_amount = 0; + } elseif ($invoice && $invoice->due_amount != $request->amount) { + $invoice->due_amount = (int)$invoice->due_amount - (int)$request->amount; + if ($invoice->due_amount < 0) { + return [ + 'error' => 'invalid_amount' + ]; + } + $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; + } + $invoice->save(); + } + + + $payment = Payment::create($data); + + $payment->unique_hash = Hashids::connection(Payment::class)->encode($payment->id); + + $payment->save(); + + $customFields = $request->customFields; + + if ($customFields) { + $payment->addCustomFields($customFields); + } + + $payment = Payment::with([ + 'user', + 'invoice', + 'paymentMethod', + ])->find($payment->id); + + return $payment; + } + + public function updatePayment($request) + { + $oldAmount = $this->amount; + + if ($request->has('invoice_id') && $request->invoice_id && ($oldAmount != $request->amount)) { + $amount = (int)$request->amount - (int)$oldAmount; + $invoice = Invoice::find($request->invoice_id); + $invoice->due_amount = (int)$invoice->due_amount - (int)$amount; + + if ($invoice->due_amount < 0) { + return [ + 'error' => 'invalid_amount' + ]; + } + + if ($invoice->due_amount == 0) { + $invoice->status = Invoice::STATUS_COMPLETED; + $invoice->paid_status = Invoice::STATUS_PAID; + } else { + $invoice->status = $invoice->getPreviousStatus(); + $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; + } + + $invoice->save(); + } + + $data = $request->all(); + + $this->update($data); + + $customFields = $request->customFields; + + if ($customFields) { + $this->updateCustomFields($customFields); + } + + $payment = Payment::with([ + 'user', + 'invoice', + 'paymentMethod', + ]) + ->find($this->id); + + return $payment; + } + + public static function deletePayments($ids) + { + foreach ($ids as $id) { + $payment = Payment::find($id); + + if ($payment->invoice_id != null) { + $invoice = Invoice::find($payment->invoice_id); + $invoice->due_amount = ((int)$invoice->due_amount + (int)$payment->amount); + + if ($invoice->due_amount == $invoice->total) { + $invoice->paid_status = Invoice::STATUS_UNPAID; + } else { + $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; + } + + $invoice->status = $invoice->getPreviousStatus(); + $invoice->save(); + } + + $payment->delete(); + } + + return true; + } + private function strposX($haystack, $needle, $number) + { + if ($number == '1') { + return strpos($haystack, $needle); + } elseif ($number > '1') { + return strpos( + $haystack, + $needle, + $this->strposX($haystack, $needle, $number - 1) + strlen($needle) + ); + } else { + return error_log('Error: Value for parameter $number is out of range'); + } + } + + public static function getNextPaymentNumber($value) + { + // Get the last created order + $payment = Payment::where('payment_number', 'LIKE', $value . '-%') + ->orderBy('created_at', 'desc') + ->first(); + if (!$payment) { + // We get here if there is no order at all + // If there is no number set it to 0, which will be 1 at the end. + $number = 0; + } else { + $number = explode("-", $payment->payment_number); + $number = $number[1]; + } + // If we have ORD000001 in the database then we only want the number + // So the substr returns this 000001 + + // Add the string in front and higher up the number. + // the %05d part makes sure that there are always 6 numbers in the string. + // so it adds the missing zero's when needed. + + return sprintf('%06d', intval($number) + 1); + } + + public function scopeWhereSearch($query, $search) + { + foreach (explode(' ', $search) as $term) { + $query->whereHas('user', function ($query) use ($term) { + $query->where('name', 'LIKE', '%' . $term . '%') + ->orWhere('contact_name', 'LIKE', '%' . $term . '%') + ->orWhere('company_name', 'LIKE', '%' . $term . '%'); + }); + } + } + + public function scopePaymentNumber($query, $paymentNumber) + { + return $query->where('payments.payment_number', 'LIKE', '%' . $paymentNumber . '%'); + } + + public function scopePaymentMethod($query, $paymentMethodId) + { + return $query->where('payments.payment_method_id', $paymentMethodId); + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + + if ($filters->get('payment_number')) { + $query->paymentNumber($filters->get('payment_number')); + } + + if ($filters->get('payment_id')) { + $query->wherePayment($filters->get('payment_id')); + } + + if ($filters->get('payment_method_id')) { + $query->paymentMethod($filters->get('payment_method_id')); + } + + if ($filters->get('customer_id')) { + $query->whereCustomer($filters->get('customer_id')); + } + + if ($filters->get('orderByField') || $filters->get('orderBy')) { + $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'payment_number'; + $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; + $query->whereOrder($field, $orderBy); + } + } + + public function scopeWhereOrder($query, $orderByField, $orderBy) + { + $query->orderBy($orderByField, $orderBy); + } + + public function scopeWherePayment($query, $payment_id) + { + $query->orWhere('id', $payment_id); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('payments.company_id', $company_id); + } + + public function scopeWhereCustomer($query, $customer_id) + { + $query->where('payments.user_id', $customer_id); + } + + public function getPDFData() + { + $company = Company::find($this->company_id); + + $logo = $company->getMedia('logo')->first(); + + if ($logo) { + $logo = $logo->getFullUrl(); + } + + view()->share([ + 'payment' => $this, + 'company_address' => $this->getCompanyAddress(), + 'billing_address' => $this->getCustomerBillingAddress(), + 'notes' => $this->getNotes(), + 'logo' => $logo ?? null + ]); + + return PDF::loadView('app.pdf.payment.payment'); + } + + public function getCompanyAddress() + { + $format = CompanySetting::getSetting('payment_company_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getCustomerBillingAddress() + { + $format = CompanySetting::getSetting('payment_from_customer_address_format', $this->company_id); + + return $this->getFormattedString($format); + } + + public function getNotes() + { + return $this->getFormattedString($this->notes); + } + + public function getEmailBody($body) + { + $values = array_merge($this->getFieldsArray(), $this->getExtraFields()); + + $body = strtr($body, $values); + + return preg_replace('/{(.*?)}/', '', $body); + } + + public function getExtraFields() + { + return [ + '{PAYMENT_DATE}' => $this->formattedPaymentDate, + '{PAYMENT_MODE}' => $this->paymentMethod ? $this->paymentMethod->name : null, + '{PAYMENT_NUMBER}' => $this->payment_number, + '{PAYMENT_AMOUNT}' => $this->reference_number, + '{PAYMENT_LINK}' => $this->paymentPdfUrl + ]; + } +} diff --git a/app/Models/PaymentMethod.php b/app/Models/PaymentMethod.php new file mode 100644 index 00000000..15e89137 --- /dev/null +++ b/app/Models/PaymentMethod.php @@ -0,0 +1,76 @@ +hasMany(Payment::class); + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('company_id', $company_id); + } + + public function scopeWherePaymentMethod($query, $payment_id) + { + $query->orWhere('id', $payment_id); + } + + public function scopeWhereSearch($query, $search) + { + $query->where('name', 'LIKE', '%' . $search . '%'); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('method_id')) { + $query->wherePaymentMethod($filters->get('method_id')); + } + + if ($filters->get('company_id')) { + $query->whereCompany($filters->get('company_id')); + } + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + + public static function createPaymentMethod($request) + { + $data = $request->validated(); + $data['company_id'] = $request->header('company'); + + $paymentMethod = self::create($data); + + return $paymentMethod; + } +} diff --git a/app/Setting.php b/app/Models/Setting.php similarity index 86% rename from app/Setting.php rename to app/Models/Setting.php index 6532c1bc..20bb678b 100644 --- a/app/Setting.php +++ b/app/Models/Setting.php @@ -1,10 +1,12 @@ get('from_date') && $filters->get('to_date')) { - $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); - $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); $query->invoicesBetween($start, $end); } diff --git a/app/Models/TaxType.php b/app/Models/TaxType.php new file mode 100644 index 00000000..fe5384d4 --- /dev/null +++ b/app/Models/TaxType.php @@ -0,0 +1,81 @@ + 'float' + ]; + + public function taxes() + { + return $this->hasMany(Tax::class); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('company_id', $company_id); + } + + public function scopeWhereTaxType($query, $tax_type_id) + { + $query->orWhere('id', $tax_type_id); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('tax_type_id')) { + $query->whereTaxType($filters->get('tax_type_id')); + } + + if ($filters->get('company_id')) { + $query->whereCompany($filters->get('company_id')); + } + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + + if ($filters->get('orderByField') || $filters->get('orderBy')) { + $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'payment_number'; + $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; + $query->whereOrder($field, $orderBy); + } + } + + public function scopeWhereOrder($query, $orderByField, $orderBy) + { + $query->orderBy($orderByField, $orderBy); + } + + public function scopeWhereSearch($query, $search) + { + $query->where('name', 'LIKE', '%' . $search . '%'); + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } +} diff --git a/app/Models/Unit.php b/app/Models/Unit.php new file mode 100644 index 00000000..1adaf095 --- /dev/null +++ b/app/Models/Unit.php @@ -0,0 +1,56 @@ +hasMany(Item::class); + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('company_id', $company_id); + } + + public function scopeWhereUnit($query, $unit_id) + { + $query->orWhere('id', $unit_id); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('unit_id')) { + $query->whereUnit($filters->get('unit_id')); + } + + if ($filters->get('company_id')) { + $query->whereCompany($filters->get('company_id')); + } + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 00000000..d67e7200 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,430 @@ +where('email', $username)->first(); + } + + public function setPasswordAttribute($value) + { + if ($value != null) { + $this->attributes['password'] = bcrypt($value); + } + } + + public function isSuperAdminOrAdmin() + { + return ($this->role == 'super admin') || ($this->role == 'admin'); + } + + public static function login($request) + { + $remember = $request->remember; + $email = $request->email; + $password = $request->password; + return (\Auth::attempt(array('email' => $email, 'password' => $password), $remember)); + } + + public function getFormattedCreatedAtAttribute($value) + { + $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); + return Carbon::parse($this->created_at)->format($dateFormat); + } + + public function estimates() + { + return $this->hasMany(Estimate::class); + } + + public function currency() + { + return $this->belongsTo(Currency::class); + } + + public function creator() + { + return $this->belongsTo('Crater\Models\User', 'creator_id'); + } + + public function company() + { + return $this->belongsTo(Company::class); + } + + public function addresses() + { + return $this->hasMany(Address::class); + } + + public function expenses() + { + return $this->hasMany(Expense::class); + } + + public function billingAddress() + { + return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE); + } + + public function shippingAddress() + { + return $this->hasOne(Address::class)->where('type', Address::SHIPPING_TYPE); + } + + public function payments() + { + return $this->hasMany(Payment::class); + } + + public function invoices() + { + return $this->hasMany(Invoice::class); + } + + public function settings() + { + return $this->hasMany(UserSetting::class, 'user_id'); + } + + /** + * Override the mail body for reset password notification mail. + */ + public function sendPasswordResetNotification($token) + { + $this->notify(new MailResetPasswordNotification($token)); + } + + public function scopeWhereOrder($query, $orderByField, $orderBy) + { + $query->orderBy($orderByField, $orderBy); + } + + public function scopeWhereSearch($query, $search) + { + foreach (explode(' ', $search) as $term) { + $query->where(function ($query) use ($term) { + $query->where('name', 'LIKE', '%' . $term . '%') + ->orWhere('email', 'LIKE', '%' . $term . '%') + ->orWhere('phone', 'LIKE', '%' . $term . '%'); + }); + } + } + + public function scopeWhereContactName($query, $contactName) + { + return $query->where('contact_name', 'LIKE', '%' . $contactName . '%'); + } + + public function scopeWhereDisplayName($query, $displayName) + { + return $query->where('name', 'LIKE', '%' . $displayName . '%'); + } + + public function scopeWherePhone($query, $phone) + { + return $query->where('phone', 'LIKE', '%' . $phone . '%'); + } + + public function scopeWhereEmail($query, $email) + { + return $query->where('email', 'LIKE', '%' . $email . '%'); + } + + public function scopeCustomer($query) + { + return $query->where('role', 'customer'); + } + + public function scopePaginateData($query, $limit) + { + if ($limit == 'all') { + return collect(['data' => $query->get()]); + } + + return $query->paginate($limit); + } + + public function scopeApplyFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('search')) { + $query->whereSearch($filters->get('search')); + } + + if ($filters->get('contact_name')) { + $query->whereContactName($filters->get('contact_name')); + } + + if ($filters->get('display_name')) { + $query->whereDisplayName($filters->get('display_name')); + } + + if ($filters->get('email')) { + $query->whereEmail($filters->get('email')); + } + + if ($filters->get('customer_id')) { + $query->whereCustomer($filters->get('customer_id')); + } + + if ($filters->get('phone')) { + $query->wherePhone($filters->get('phone')); + } + + if ($filters->get('orderByField') || $filters->get('orderBy')) { + $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'name'; + $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; + $query->whereOrder($field, $orderBy); + } + } + + public function scopeWhereCompany($query, $company_id) + { + $query->where('users.company_id', $company_id); + } + + public function scopeWhereCustomer($query, $customer_id) + { + $query->orWhere('users.id', $customer_id); + } + + public function scopeApplyInvoiceFilters($query, array $filters) + { + $filters = collect($filters); + + if ($filters->get('from_date') && $filters->get('to_date')) { + $start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date')); + $end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date')); + $query->invoicesBetween($start, $end); + } + } + + public function scopeInvoicesBetween($query, $start, $end) + { + $query->whereHas('invoices', function ($query) use ($start, $end) { + $query->whereBetween( + 'invoice_date', + [$start->format('Y-m-d'), $end->format('Y-m-d')] + ); + }); + } + + public static function deleteCustomers($ids) + { + foreach ($ids as $id) { + + $customer = self::find($id); + + if ($customer->estimates()->exists()) { + $customer->estimates()->delete(); + } + + if ($customer->invoices()->exists()) { + $customer->invoices()->delete(); + } + + if ($customer->payments()->exists()) { + $customer->payments()->delete(); + } + + if ($customer->addresses()->exists()) { + $customer->addresses()->delete(); + } + + $customer->delete(); + } + + return true; + } + + public function getAvatarAttribute() + { + $avatar = $this->getMedia('admin_avatar')->first(); + + if ($avatar) { + return asset($avatar->getUrl()); + } + + return 0; + } + + public static function createCustomer($request) + { + $data = $request->only([ + 'name', + 'email', + 'phone', + 'company_name', + 'contact_name', + 'website', + 'enable_portal' + ]); + + $data['creator_id'] = Auth::id(); + $data['company_id'] = $request->header('company'); + $data['role'] = 'customer'; + $data['password'] = Hash::make($request->password); + $customer = User::create($data); + + $customer['currency_id'] = $request->currency_id; + $customer->save(); + + if ($request->addresses) { + foreach ($request->addresses as $address) { + $customer->addresses()->create($address); + } + } + + $customFields = $request->customFields; + + if ($customFields) { + $customer->addCustomFields($customFields); + } + + $customer = User::with('billingAddress', 'shippingAddress', 'fields')->find($customer->id); + + return $customer; + } + + public static function updateCustomer($request, $customer) + { + $data = $request->only([ + 'name', + 'currency_id', + 'email', + 'phone', + 'company_name', + 'contact_name', + 'website', + 'enable_portal' + ]); + + $data['role'] = 'customer'; + if ($request->has('password')) { + $customer->password = Hash::make($request->password); + } + $customer->update($data); + + $customer->addresses()->delete(); + if ($request->addresses) { + foreach ($request->addresses as $address) { + $customer->addresses()->create($address); + } + } + + $customFields = $request->customFields; + + if ($customFields) { + $customer->updateCustomFields($customFields); + } + + $customer = User::with('billingAddress', 'shippingAddress', 'fields')->find($customer->id); + + return $customer; + } + + public function setSettings($settings) + { + foreach ($settings as $key => $value) { + $this->settings()->updateOrCreate( + [ + 'key' => $key, + ], + [ + 'key' => $key, + 'value' => $value + ] + ); + } + } + + public function getSettings($settings) + { + $settings = $this->settings()->whereIn('key', $settings)->get(); + $companySettings = []; + + foreach ($settings as $setting) { + $companySettings[$setting->key] = $setting->value; + } + + return $companySettings; + } +} diff --git a/app/Models/UserSetting.php b/app/Models/UserSetting.php new file mode 100644 index 00000000..c0f138c8 --- /dev/null +++ b/app/Models/UserSetting.php @@ -0,0 +1,19 @@ +belongsTo(User::class); + } +} diff --git a/app/Payment.php b/app/Payment.php deleted file mode 100644 index e82e0db4..00000000 --- a/app/Payment.php +++ /dev/null @@ -1,179 +0,0 @@ - '1') { - return strpos( - $haystack, - $needle, - $this->strposX($haystack, $needle, $number - 1) + strlen($needle) - ); - } else { - return error_log('Error: Value for parameter $number is out of range'); - } - } - - public function getPaymentNumAttribute() - { - $position = $this->strposX($this->payment_number, "-", 1) + 1; - return substr($this->payment_number, $position); - } - - public static function getNextPaymentNumber($value) - { - // Get the last created order - $payment = Payment::where('payment_number', 'LIKE', $value . '-%') - ->orderBy('created_at', 'desc') - ->first(); - if (!$payment) { - // We get here if there is no order at all - // If there is no number set it to 0, which will be 1 at the end. - $number = 0; - } else { - $number = explode("-",$payment->payment_number); - $number = $number[1]; - } - // If we have ORD000001 in the database then we only want the number - // So the substr returns this 000001 - - // Add the string in front and higher up the number. - // the %05d part makes sure that there are always 6 numbers in the string. - // so it adds the missing zero's when needed. - - return sprintf('%06d', intval($number) + 1); - } - - public function getPaymentPrefixAttribute () - { - $prefix= explode("-",$this->payment_number)[0]; - return $prefix; - } - - public function invoice() - { - return $this->belongsTo(Invoice::class); - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function paymentMethod() - { - return $this->belongsTo(PaymentMethod::class); - } - - public function getFormattedCreatedAtAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->created_at)->format($dateFormat); - } - - public function getFormattedPaymentDateAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->payment_date)->format($dateFormat); - } - - public function scopeWhereSearch($query, $search) - { - foreach (explode(' ', $search) as $term) { - $query->whereHas('user', function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%') - ->orWhere('contact_name', 'LIKE', '%'.$term.'%') - ->orWhere('company_name', 'LIKE', '%'.$term.'%'); - }); - } - } - - public function scopePaymentNumber($query, $paymentNumber) - { - return $query->where('payments.payment_number', 'LIKE', '%'.$paymentNumber.'%'); - } - - public function scopePaymentMethod($query, $paymentMethodId) - { - return $query->where('payments.payment_method_id', $paymentMethodId); - } - - public function scopeApplyFilters($query, array $filters) - { - $filters = collect($filters); - - if ($filters->get('search')) { - $query->whereSearch($filters->get('search')); - } - - if ($filters->get('payment_number')) { - $query->paymentNumber($filters->get('payment_number')); - } - - if ($filters->get('payment_method_id')) { - $query->paymentMethod($filters->get('payment_method_id')); - } - - if ($filters->get('customer_id')) { - $query->whereCustomer($filters->get('customer_id')); - } - - if ($filters->get('orderByField') || $filters->get('orderBy')) { - $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'payment_number'; - $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; - $query->whereOrder($field, $orderBy); - } - } - - public function scopeWhereOrder($query, $orderByField, $orderBy) - { - $query->orderBy($orderByField, $orderBy); - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('payments.company_id', $company_id); - } - - public function scopeWhereCustomer($query, $customer_id) - { - $query->where('payments.user_id', $customer_id); - } -} diff --git a/app/PaymentMethod.php b/app/PaymentMethod.php deleted file mode 100644 index 2c85b747..00000000 --- a/app/PaymentMethod.php +++ /dev/null @@ -1,25 +0,0 @@ -hasMany(Payment::class); - } - - public function company() - { - return $this->belongsTo(Company::class); - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('company_id', $company_id); - } -} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 63c8e52a..c00df5a2 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -14,6 +14,7 @@ class AppServiceProvider extends ServiceProvider public function boot() { Paginator::useBootstrapThree(); + $this->loadJsonTranslationsFrom(resource_path('assets/js/plugins')); } /** @@ -23,11 +24,6 @@ class AppServiceProvider extends ServiceProvider */ public function register() { - /*ADD THIS LINES*/ - $this->commands([ - \Laravel\Passport\Console\InstallCommand::class, - \Laravel\Passport\Console\KeysCommand::class, - \Laravel\Passport\Console\ClientCommand::class, - ]); + // } } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 0e3f17c2..c3979865 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -2,7 +2,6 @@ namespace Crater\Providers; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; -use Laravel\Passport\Passport; class AuthServiceProvider extends ServiceProvider { @@ -23,7 +22,5 @@ class AuthServiceProvider extends ServiceProvider public function boot() { $this->registerPolicies(); - - Passport::routes(); } } diff --git a/app/Providers/DropboxServiceProvider.php b/app/Providers/DropboxServiceProvider.php new file mode 100644 index 00000000..9aed5eed --- /dev/null +++ b/app/Providers/DropboxServiceProvider.php @@ -0,0 +1,39 @@ +configureRateLimiting(); - parent::boot(); + $this->routes(function () { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); } /** - * Define the routes for the application. + * Configure the rate limiters for the application. * * @return void */ - public function map() + protected function configureRateLimiting() { - $this->mapApiRoutes(); - - $this->mapWebRoutes(); - - // + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60); + }); } - - /** - * Define the "web" routes for the application. - * - * These routes all receive session state, CSRF protection, etc. - * - * @return void - */ - protected function mapWebRoutes() - { - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - } - - /** - * Define the "api" routes for the application. - * - * These routes are typically stateless. - * - * @return void - */ - protected function mapApiRoutes() - { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - } -} +} \ No newline at end of file diff --git a/app/Proxy/HttpKernelProxy.php b/app/Proxy/HttpKernelProxy.php deleted file mode 100644 index a540c428..00000000 --- a/app/Proxy/HttpKernelProxy.php +++ /dev/null @@ -1,423 +0,0 @@ -app = $app; - } - - /** - * Define additional headers to be sent with the request. - * - * @param array $headers - * @return $this - */ - public function withHeaders(array $headers) - { - $this->defaultHeaders = array_merge($this->defaultHeaders, $headers); - - return $this; - } - - /** - * Add a header to be sent with the request. - * - * @param string $name - * @param string $value - * @return $this - */ - public function withHeader(string $name, string $value) - { - $this->defaultHeaders[$name] = $value; - - return $this; - } - - /** - * Flush all the configured headers. - * - * @return $this - */ - public function flushHeaders() - { - $this->defaultHeaders = []; - - return $this; - } - - /** - * Define a set of server variables to be sent with the requests. - * - * @param array $server - * @return $this - */ - public function withServerVariables(array $server) - { - $this->serverVariables = $server; - - return $this; - } - - /** - * Automatically follow any redirects returned from the response. - * - * @return $this - */ - public function followingRedirects() - { - $this->followRedirects = true; - - return $this; - } - - /** - * Set the referer header to simulate a previous request. - * - * @param string $url - * @return $this - */ - public function from(string $url) - { - return $this->withHeader('referer', $url); - } - - /** - * Visit the given URI with a GET request. - * - * @param string $uri - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function get($uri, array $headers = []) - { - $server = $this->transformHeadersToServerVars($headers); - - return $this->call('GET', $uri, [], [], [], $server); - } - - /** - * Visit the given URI with a GET request, expecting a JSON response. - * - * @param string $uri - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function getJson($uri, array $headers = []) - { - return $this->json('GET', $uri, [], $headers); - } - - /** - * Visit the given URI with a POST request. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function post($uri, array $data = [], array $headers = []) - { - $server = $this->transformHeadersToServerVars($headers); - - return $this->call('POST', $uri, $data, [], [], $server); - } - - /** - * Visit the given URI with a POST request, expecting a JSON response. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function postJson($uri, array $data = [], array $headers = []) - { - return $this->json('POST', $uri, $data, $headers); - } - - /** - * Visit the given URI with a PUT request. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function put($uri, array $data = [], array $headers = []) - { - $server = $this->transformHeadersToServerVars($headers); - - return $this->call('PUT', $uri, $data, [], [], $server); - } - - /** - * Visit the given URI with a PUT request, expecting a JSON response. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function putJson($uri, array $data = [], array $headers = []) - { - return $this->json('PUT', $uri, $data, $headers); - } - - /** - * Visit the given URI with a PATCH request. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function patch($uri, array $data = [], array $headers = []) - { - $server = $this->transformHeadersToServerVars($headers); - - return $this->call('PATCH', $uri, $data, [], [], $server); - } - - /** - * Visit the given URI with a PATCH request, expecting a JSON response. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function patchJson($uri, array $data = [], array $headers = []) - { - return $this->json('PATCH', $uri, $data, $headers); - } - - /** - * Visit the given URI with a DELETE request. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function delete($uri, array $data = [], array $headers = []) - { - $server = $this->transformHeadersToServerVars($headers); - - return $this->call('DELETE', $uri, $data, [], [], $server); - } - - /** - * Visit the given URI with a DELETE request, expecting a JSON response. - * - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function deleteJson($uri, array $data = [], array $headers = []) - { - return $this->json('DELETE', $uri, $data, $headers); - } - - /** - * Call the given URI with a JSON request. - * - * @param string $method - * @param string $uri - * @param array $data - * @param array $headers - * @return \Illuminate\Http\Response - */ - public function json($method, $uri, array $data = [], array $headers = []) - { - $files = $this->extractFilesFromDataArray($data); - - $content = json_encode($data); - - $headers = array_merge([ - 'CONTENT_LENGTH' => mb_strlen($content, '8bit'), - 'CONTENT_TYPE' => 'application/json', - 'Accept' => 'application/json', - ], $headers); - - return $this->call( - $method, - $uri, - [], - [], - $files, - $this->transformHeadersToServerVars($headers), - $content - ); - } - - /** - * Call the given URI and return the Response. - * - * @param string $method - * @param string $uri - * @param array $parameters - * @param array $cookies - * @param array $files - * @param array $server - * @param string $content - * @return \Illuminate\Http\Response - */ - public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null) - { - $kernel = $this->app->make(HttpKernel::class); - - $files = array_merge($files, $this->extractFilesFromDataArray($parameters)); - - $symfonyRequest = SymfonyRequest::create( - $this->prepareUrlForRequest($uri), - $method, - $parameters, - $cookies, - $files, - array_replace($this->serverVariables, $server), - $content - ); - - $response = $kernel->handle( - $request = Request::createFromBase($symfonyRequest) - ); - - if ($this->followRedirects) { - $response = $this->followRedirects($response); - } - - $kernel->terminate($request, $response); - - return $response; - } - - /** - * Turn the given URI into a fully qualified URL. - * - * @param string $uri - * @return string - */ - protected function prepareUrlForRequest($uri) - { - if (Str::startsWith($uri, '/')) { - $uri = substr($uri, 1); - } - - if (!Str::startsWith($uri, 'http')) { - $uri = config('app.url') . '/' . $uri; - } - - return trim($uri, '/'); - } - - /** - * Transform headers array to array of $_SERVER vars with HTTP_* format. - * - * @param array $headers - * @return array - */ - protected function transformHeadersToServerVars(array $headers) - { - return collect(array_merge($this->defaultHeaders, $headers))->mapWithKeys(function ($value, $name) { - $name = strtr(strtoupper($name), '-', '_'); - - return [$this->formatServerHeaderKey($name) => $value]; - })->all(); - } - - /** - * Format the header name for the server array. - * - * @param string $name - * @return string - */ - protected function formatServerHeaderKey($name) - { - if (!Str::startsWith($name, 'HTTP_') && $name != 'CONTENT_TYPE' && $name != 'REMOTE_ADDR') { - return 'HTTP_' . $name; - } - - return $name; - } - - /** - * Extract the file uploads from the given data array. - * - * @param array $data - * @return array - */ - protected function extractFilesFromDataArray(&$data) - { - $files = []; - - foreach ($data as $key => $value) { - if ($value instanceof SymfonyUploadedFile) { - $files[$key] = $value; - - unset($data[$key]); - } - - if (is_array($value)) { - $files[$key] = $this->extractFilesFromDataArray($value); - - $data[$key] = $value; - } - } - - return $files; - } - - /** - * Follow a redirect chain until a non-redirect is received. - * - * @param \Illuminate\Http\Response $response - * @return \Illuminate\Http\Response - */ - protected function followRedirects($response) - { - while ($response->isRedirect()) { - $response = $this->get($response->headers->get('Location')); - } - - $this->followRedirects = false; - - return $response; - } -} diff --git a/app/Rules/Backup/BackupDisk.php b/app/Rules/Backup/BackupDisk.php new file mode 100644 index 00000000..1e285ff1 --- /dev/null +++ b/app/Rules/Backup/BackupDisk.php @@ -0,0 +1,42 @@ +class = $class; + $this->relation = $relation; + } + + /** + * Determine if the validation rule passes. + * + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function passes($attribute, $value) + { + $relation = $this->relation; + + if ($this->class::find($value)->$relation()->exists()) { + return false; + } + + return true; + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return "Relation {$this->relation} exists."; + } +} diff --git a/app/Rules/UniqueNumber.php b/app/Rules/UniqueNumber.php new file mode 100644 index 00000000..bf639d13 --- /dev/null +++ b/app/Rules/UniqueNumber.php @@ -0,0 +1,60 @@ +class = $class; + $this->id = $id; + } + + /** + * Determine if the validation rule passes. + * + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function passes($attribute, $value) + { + if ($value && count(explode("-", $value)) > 2) { + $number = explode("-",$value); + $uniqueNumber = $number[0].'-'.sprintf('%06d', intval($number[1])); + } else { + $uniqueNumber = $value; + } + + if ($this->id && $this->class::where('id', $this->id)->where($attribute, $uniqueNumber)->first()) { + return true; + } + + if ($this->class::where($attribute, $uniqueNumber)->first()) { + return false; + } + + return true; + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return 'Invalid number passed.'; + } +} diff --git a/app/Space/EnvironmentManager.php b/app/Space/EnvironmentManager.php index acb11dc8..c7c05094 100755 --- a/app/Space/EnvironmentManager.php +++ b/app/Space/EnvironmentManager.php @@ -6,6 +6,7 @@ use Exception; use Illuminate\Http\Request; use Crater\Http\Requests\DatabaseEnvironmentRequest; use Crater\Http\Requests\MailEnvironmentRequest; +use Crater\Http\Requests\DiskEnvironmentRequest; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Artisan; @@ -25,7 +26,7 @@ class EnvironmentManager } /** - * Save the form content to the .env file. + * Save the database content to the .env file. * * @param DatabaseEnvironmentRequest $request * @return array @@ -33,20 +34,47 @@ class EnvironmentManager public function saveDatabaseVariables(DatabaseEnvironmentRequest $request) { $oldDatabaseData = - 'DB_CONNECTION='.config('database.default')."\n". - 'DB_HOST='.config('database.connections.'.config('database.default').'.host')."\n". - 'DB_PORT='.config('database.connections.'.config('database.default').'.port')."\n". - 'DB_DATABASE='.config('database.connections.'.config('database.default').'.database')."\n". - 'DB_USERNAME='.config('database.connections.'.config('database.default').'.username')."\n". - 'DB_PASSWORD="'.config('database.connections.'.config('database.default').'.password')."\"\n\n"; + 'DB_CONNECTION='.config('database.default')."\n"; $newDatabaseData = - 'DB_CONNECTION='.$request->database_connection."\n". - 'DB_HOST='.$request->database_hostname."\n". - 'DB_PORT='.$request->database_port."\n". - 'DB_DATABASE='.$request->database_name."\n". - 'DB_USERNAME='.$request->database_username."\n". - 'DB_PASSWORD="'.$request->database_password."\"\n\n"; + 'DB_CONNECTION='.$request->database_connection."\n"; + + if($request->has('database_username') && $request->has('database_password')) { + if(env('DB_USERNAME') && env('DB_HOST')){ + $oldDatabaseData = $oldDatabaseData. + 'DB_HOST='.config('database.connections.'.config('database.default').'.host')."\n". + 'DB_PORT='.config('database.connections.'.config('database.default').'.port')."\n". + 'DB_DATABASE='.config('database.connections.'.config('database.default').'.database')."\n". + 'DB_USERNAME='.config('database.connections.'.config('database.default').'.username')."\n". + 'DB_PASSWORD="'.config('database.connections.'.config('database.default').'.password')."\"\n\n"; + } else { + $oldDatabaseData = $oldDatabaseData. + 'DB_DATABASE='.config('database.connections.'.config('database.default').'.database')."\n\n"; + } + + $newDatabaseData = $newDatabaseData. + 'DB_HOST='.$request->database_hostname."\n". + 'DB_PORT='.$request->database_port."\n". + 'DB_DATABASE='.$request->database_name."\n". + 'DB_USERNAME='.$request->database_username."\n". + 'DB_PASSWORD="'.$request->database_password."\"\n\n"; + } else { + + if(env('DB_USERNAME') && env('DB_HOST')){ + $oldDatabaseData = $oldDatabaseData. + 'DB_HOST='.config('database.connections.'.config('database.default').'.host')."\n". + 'DB_PORT='.config('database.connections.'.config('database.default').'.port')."\n". + 'DB_DATABASE='.config('database.connections.'.config('database.default').'.database')."\n". + 'DB_USERNAME='.config('database.connections.'.config('database.default').'.username')."\n". + 'DB_PASSWORD="'.config('database.connections.'.config('database.default').'.password')."\"\n\n"; + } else { + $oldDatabaseData = $oldDatabaseData. + 'DB_DATABASE='.config('database.connections.'.config('database.default').'.database')."\n\n"; + } + + $newDatabaseData = $newDatabaseData. + 'DB_DATABASE='.$request->database_name."\n\n"; + } try { @@ -64,7 +92,6 @@ class EnvironmentManager 'error_message' => $e->getMessage() ]; } - try { file_put_contents($this->envPath, str_replace( @@ -79,6 +106,19 @@ class EnvironmentManager file_get_contents($this->envPath) )); + file_put_contents($this->envPath, str_replace( + 'SANCTUM_STATEFUL_DOMAINS='.env('SANCTUM_STATEFUL_DOMAINS'), + 'SANCTUM_STATEFUL_DOMAINS='.$request->app_domain, + file_get_contents($this->envPath) + )); + + + file_put_contents($this->envPath, str_replace( + 'SESSION_DOMAIN='.config('session.domain'), + 'SESSION_DOMAIN='.explode(':',$request->app_domain)[0], + file_get_contents($this->envPath) + )); + } catch (Exception $e) { return [ 'error' => 'database_variables_save_error' @@ -91,7 +131,43 @@ class EnvironmentManager } /** - * Save the form content to the .env file. + * + * @param DatabaseEnvironmentRequest $request + * @return bool + */ + private function checkDatabaseConnection(DatabaseEnvironmentRequest $request) + { + $connection = $request->database_connection; + + $settings = config("database.connections.$connection"); + + $connectionArray = array_merge($settings, [ + 'driver' => $connection, + 'database' => $request->database_name, + ]); + + if($request->has('database_username') && $request->has('database_password')) { + $connectionArray = array_merge($connectionArray, [ + 'username' => $request->database_username, + 'password' => $request->database_password, + 'host' => $request->database_hostname, + 'port' => $request->database_port, + ]); + } + + config([ + 'database' => [ + 'migrations' => 'migrations', + 'default' => $connection, + 'connections' => [$connection => $connectionArray], + ], + ]); + + return DB::connection()->getPdo(); + } + + /** + * Save the mail content to the .env file. * * @param Request $request * @return array @@ -290,34 +366,135 @@ class EnvironmentManager ]; } - /** + /** + * Save the disk content to the .env file. * - * @param DatabaseEnvironmentRequest $request - * @return bool + * @param Request $request + * @return array */ - private function checkDatabaseConnection(DatabaseEnvironmentRequest $request) + public function saveDiskVariables(DiskEnvironmentRequest $request) { - $connection = $request->database_connection; + $diskData = $this->getDiskData($request); - $settings = config("database.connections.$connection"); + try { - config([ - 'database' => [ - 'migrations' => 'migrations', - 'default' => $connection, - 'connections' => [ - $connection => array_merge($settings, [ - 'driver' => $connection, - 'host' => $request->database_hostname, - 'port' => $request->database_port, - 'database' => $request->database_name, - 'username' => $request->database_username, - 'password' => $request->database_password, - ]), - ], - ], - ]); + if(!$diskData['old_default_driver']){ + file_put_contents($this->envPath, $diskData['default_driver'], FILE_APPEND); + } else { + file_put_contents($this->envPath, str_replace( + $diskData['old_default_driver'], + $diskData['default_driver'], + file_get_contents($this->envPath) + )); + } - return DB::connection()->getPdo(); + if(!$diskData['old_disk_data']){ + file_put_contents($this->envPath, $diskData['new_disk_data'], FILE_APPEND); + } else { + + file_put_contents($this->envPath, str_replace( + $diskData['old_disk_data'], + $diskData['new_disk_data'], + file_get_contents($this->envPath) + )); + } + + } catch (Exception $e) { + return [ + 'error' => 'disk_variables_save_error' + ]; + } + + return [ + 'success' => 'disk_variables_save_successfully' + ]; + } + + private function getDiskData($request) + { + $oldDefaultDriver = ""; + $defaultDriver = ""; + $oldDiskData = ""; + $newDiskData = ""; + + if($request->default_driver) { + if(env('FILESYSTEM_DRIVER') !== NULL) { + $defaultDriver = "\n".'FILESYSTEM_DRIVER='.$request->default_driver."\n"; + + $oldDefaultDriver = + "\n".'FILESYSTEM_DRIVER='.config('filesystems.default')."\n"; + } else { + $defaultDriver = + "\n".'FILESYSTEM_DRIVER='.$request->default_driver."\n"; + } + } + + switch ($request->selected_driver) { + case 's3': + if(env('AWS_KEY') !== NULL){ + $oldDiskData = "\n". + 'AWS_KEY='.config('filesystems.disks.s3.key')."\n". + 'AWS_SECRET="'.config('filesystems.disks.s3.secret')."\"\n". + 'AWS_REGION='.config('filesystems.disks.s3.region')."\n". + 'AWS_BUCKET='.config('filesystems.disks.s3.bucket')."\n". + 'AWS_ROOT='.config('filesystems.disks.s3.root')."\n"; + } + + $newDiskData = "\n". + 'AWS_KEY='.$request->aws_key."\n". + 'AWS_SECRET="'.$request->aws_secret."\"\n". + 'AWS_REGION='.$request->aws_region."\n". + 'AWS_BUCKET='.$request->aws_bucket."\n". + 'AWS_ROOT='.$request->aws_root."\n"; + + break; + + case 'doSpaces': + if(env('DO_SPACES_KEY') !== NULL){ + $oldDiskData = "\n". + 'DO_SPACES_KEY='.config('filesystems.disks.doSpaces.key')."\n". + 'DO_SPACES_SECRET="'.config('filesystems.disks.doSpaces.secret')."\"\n". + 'DO_SPACES_REGION='.config('filesystems.disks.doSpaces.region')."\n". + 'DO_SPACES_BUCKET='.config('filesystems.disks.doSpaces.bucket')."\n". + 'DO_SPACES_ENDPOINT='.config('filesystems.disks.doSpaces.endpoint')."\n"; + 'DO_SPACES_ROOT='.config('filesystems.disks.doSpaces.root')."\n"; + } + + $newDiskData = "\n". + 'DO_SPACES_KEY='.$request->do_spaces_key."\n". + 'DO_SPACES_SECRET="'.$request->do_spaces_secret."\"\n". + 'DO_SPACES_REGION='.$request->do_spaces_region."\n". + 'DO_SPACES_BUCKET='.$request->do_spaces_bucket."\n". + 'DO_SPACES_ENDPOINT='.$request->do_spaces_endpoint."\n"; + 'DO_SPACES_ROOT='.$request->do_spaces_root."\n\n"; + + break; + + case 'dropbox': + if(env('DROPBOX_TOKEN') !== NULL){ + $oldDiskData = "\n". + 'DROPBOX_TOKEN='.config('filesystems.disks.dropbox.token')."\n". + 'DROPBOX_KEY='.config('filesystems.disks.dropbox.key')."\n". + 'DROPBOX_SECRET="'.config('filesystems.disks.dropbox.secret')."\"\n". + 'DROPBOX_APP='.config('filesystems.disks.dropbox.app')."\n". + 'DROPBOX_ROOT='.config('filesystems.disks.dropbox.root')."\n"; + } + + $newDiskData = "\n". + 'DROPBOX_TOKEN='.$request->dropbox_token."\n". + 'DROPBOX_KEY='.$request->dropbox_key."\n". + 'DROPBOX_SECRET="'.$request->dropbox_secret."\"\n". + 'DROPBOX_APP='.$request->dropbox_app."\n". + 'DROPBOX_ROOT='.$request->dropbox_root."\n"; + + break; + } + + return [ + 'old_disk_data' => $oldDiskData, + 'new_disk_data' => $newDiskData, + 'default_driver' => $defaultDriver, + 'old_default_driver' => $oldDefaultDriver + ]; } } diff --git a/app/Space/PermissionsChecker.php b/app/Space/PermissionsChecker.php index d06773e2..5a0b7584 100755 --- a/app/Space/PermissionsChecker.php +++ b/app/Space/PermissionsChecker.php @@ -30,7 +30,7 @@ class PermissionsChecker public function check(array $folders) { foreach ($folders as $folder => $permission) { - if (! ($this->getPermission($folder) >= $permission)) { + if (!($this->getPermission($folder) >= $permission)) { $this->addFileAndSetErrors($folder, $permission, false); } else { $this->addFile($folder, $permission, true); diff --git a/app/Space/SiteApi.php b/app/Space/SiteApi.php index 86730ea0..b58fb6d7 100644 --- a/app/Space/SiteApi.php +++ b/app/Space/SiteApi.php @@ -4,7 +4,7 @@ namespace Crater\Space; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; -use Crater\Setting; +use Crater\Models\Setting; // Implementation taken from Akaunting - https://github.com/akaunting/akaunting trait SiteApi diff --git a/app/Space/Updater.php b/app/Space/Updater.php index aad9192f..560397d7 100644 --- a/app/Space/Updater.php +++ b/app/Space/Updater.php @@ -43,15 +43,15 @@ class Updater return $data; } - public static function download($new_version) + public static function download($new_version, $is_cmd = 0) { $data = null; $path = null; if (env('APP_ENV') === 'development') { - $url = 'downloads/file/' . $new_version . '?type=update&is_dev=1'; + $url = 'downloads/file/' . $new_version . '?type=update&is_dev=1&is_cmd='. $is_cmd; } else { - $url = 'downloads/file/' . $new_version . '?type=update'; + $url = 'downloads/file/' . $new_version . '?type=update&is_cmd='. $is_cmd; } $response = static::getRemote($url, ['timeout' => 100, 'track_redirects' => true]); diff --git a/app/Space/helpers.php b/app/Space/helpers.php index e8ae1cda..0c80b52b 100644 --- a/app/Space/helpers.php +++ b/app/Space/helpers.php @@ -1,6 +1,8 @@ contains('slug', $slug)) { + return $slug; + } + + // Just append numbers like a savage until we find not used. + for ($i = 1; $i <= 10; $i++) { + $newSlug = $slug . '_' . $i; + if (!$allSlugs->contains('slug', $newSlug)) { + return $newSlug; + } + } + + throw new \Exception('Can not create a unique slug'); +} + +function getRelatedSlugs($type, $slug, $id = 0) +{ + return CustomField::select('slug')->where('slug', 'like', $slug . '%') + ->where('model_type', $type) + ->where('id', '<>', $id) + ->get(); +} diff --git a/app/TaxType.php b/app/TaxType.php deleted file mode 100644 index e80819bd..00000000 --- a/app/TaxType.php +++ /dev/null @@ -1,31 +0,0 @@ - 'float' - ]; - - public function taxes() - { - return $this->hasMany(Tax::class); - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('company_id', $company_id); - } -} diff --git a/app/Traits/GeneratesPdfTrait.php b/app/Traits/GeneratesPdfTrait.php new file mode 100644 index 00000000..4eec6bd3 --- /dev/null +++ b/app/Traits/GeneratesPdfTrait.php @@ -0,0 +1,183 @@ +getGeneratedPDF($collection_name); + + if($pdf && file_exists($pdf['path'])) { + return response()->make(file_get_contents($pdf['path']), 200, [ + 'Content-Type' => 'application/pdf', + 'Content-Disposition' => 'inline; filename="'.$pdf['file_name'].'"' + ]); + } + + $locale = CompanySetting::getSetting('language', $this->company_id); + + App::setLocale($locale); + + $pdf = $this->getPDFData(); + + return response()->make($pdf->stream(), 200, [ + 'Content-Type' => 'application/pdf', + 'Content-Disposition' => 'inline; filename="'.$this[$collection_name.'_number'].'"' + ]); + } + + public function getGeneratedPDF($collection_name) + { + try { + $media = $this->getMedia($collection_name)->first(); + + if ($media) { + $file_disk = FileDisk::find($media->custom_properties['file_disk_id']); + + if (!$file_disk) { + return false; + } + + $file_disk->setConfig(); + + $path = null; + + if($file_disk->driver == 'local'){ + $path = $media->getPath(); + } else { + $path = $media->getTemporaryUrl(Carbon::now()->addMinutes(5)); + } + + return collect([ + 'path' => $path, + 'file_name' => $media->file_name + ]); + } + } catch(\Exception $e){ + return false; + } + + return false; + } + + + public function generatePDF($collection_name, $file_name, $deleteExistingFile = false) + { + $save_pdf_to_disk = CompanySetting::getSetting('save_pdf_to_disk', $this->company_id); + + if($save_pdf_to_disk == 'NO') { + return 0; + } + + $locale = CompanySetting::getSetting('language', $this->company_id); + + App::setLocale($locale); + + $pdf = $this->getPDFData(); + + \Storage::disk('local')->put('temp/'.$collection_name.'/'.$this->id.'/temp.pdf', $pdf->output()); + + if($deleteExistingFile) { + $this->clearMediaCollection($collection_name); + } + + $file_disk = FileDisk::whereSetAsDefault(true)->first(); + + if ($file_disk) { + $file_disk->setConfig(); + } + + $media = \Storage::disk('local')->path('temp/'.$collection_name.'/'.$this->id.'/temp.pdf'); + + try { + $this->addMedia($media) + ->withCustomProperties(['file_disk_id' => $file_disk->id]) + ->usingFileName($file_name.'.pdf') + ->toMediaCollection($collection_name, config('filesystems.default')); + + \Storage::disk('local')->deleteDirectory('temp/'.$collection_name.'/'.$this->id); + + return true; + } catch (\Exception $e) { + return $e->getMessage(); + } + } + + public function getFieldsArray() + { + $customer = $this->user; + $shippingAddress = $customer->shippingAddress ?? new Address(); + $billingAddress = $customer->billingAddress ?? new Address(); + $companyAddress = $this->company->address ?? new Address(); + + $fields = [ + '{SHIPPING_ADDRESS_NAME}' => $shippingAddress->name, + '{SHIPPING_COUNTRY}' => $shippingAddress->country_name, + '{SHIPPING_STATE}' => $shippingAddress->state, + '{SHIPPING_CITY}' => $shippingAddress->city, + '{SHIPPING_ADDRESS_STREET_1}' => $shippingAddress->address_street_1, + '{SHIPPING_ADDRESS_STREET_2}' => $shippingAddress->address_street_2, + '{SHIPPING_PHONE}' => $shippingAddress->phone, + '{SHIPPING_ZIP_CODE}' => $shippingAddress->zip, + '{BILLING_ADDRESS_NAME}' => $billingAddress->name, + '{BILLING_COUNTRY}' => $billingAddress->country_name, + '{BILLING_STATE}' => $billingAddress->state, + '{BILLING_CITY}' => $billingAddress->city, + '{BILLING_ADDRESS_STREET_1}' => $billingAddress->address_street_1, + '{BILLING_ADDRESS_STREET_2}' => $billingAddress->address_street_2, + '{BILLING_PHONE}' => $billingAddress->phone, + '{BILLING_ZIP_CODE}' => $billingAddress->zip, + '{COMPANY_NAME}' => $this->company->name, + '{COMPANY_COUNTRY}' => $companyAddress->country_name, + '{COMPANY_STATE}' => $companyAddress->state, + '{COMPANY_CITY}' => $companyAddress->city, + '{COMPANY_ADDRESS_STREET_1}' => $companyAddress->address_street_1, + '{COMPANY_ADDRESS_STREET_2}' => $companyAddress->address_street_2, + '{COMPANY_PHONE}' => $companyAddress->phone, + '{COMPANY_ZIP_CODE}' => $companyAddress->zip, + '{CONTACT_DISPLAY_NAME}' => $customer->name, + '{PRIMARY_CONTACT_NAME}' => $customer->contact_name, + '{CONTACT_EMAIL}' => $customer->email, + '{CONTACT_PHONE}' => $customer->phone, + '{CONTACT_WEBSITE}' => $customer->website, + ]; + + $customFields = $this->fields; + $customerCustomFields = $this->user->fields; + + foreach ($customFields as $customField) { + $fields['{'.$customField->customField->slug.'}'] = $customField->defaultAnswer; + } + + foreach ($customerCustomFields as $customField) { + $fields['{'.$customField->customField->slug.'}'] = $customField->defaultAnswer; + } + + return $fields; + } + + public function getFormattedString($format) + { + $values = array_merge($this->getFieldsArray(), $this->getExtraFields()); + + $str = nl2br(strtr($format, $values)); + + $str = preg_replace('/{(.*?)}/', '', $str); + + $str = preg_replace("/<[^\/>]*>([\s]?)*<\/[^>]*>/", '', $str); + + $str = str_replace("

", "", $str); + + $str = str_replace("

", "
", $str); + + return $str; + } +} diff --git a/app/Traits/HasCustomFieldsTrait.php b/app/Traits/HasCustomFieldsTrait.php new file mode 100644 index 00000000..f7677c57 --- /dev/null +++ b/app/Traits/HasCustomFieldsTrait.php @@ -0,0 +1,48 @@ +morphMany('Crater\Models\CustomFieldValue', 'custom_field_valuable'); + } + + public function addCustomFields($customFields) + { + foreach ($customFields as $field) { + $customField = CustomField::find($field['id']); + + $customFieldValue = [ + 'type' => $customField->type, + 'custom_field_id' => $customField->id, + 'company_id' => $customField->company_id, + getCustomFieldValueKey($customField->type) => $field['value'] + ]; + + $this->fields()->create($customFieldValue); + } + } + + public function updateCustomFields($customFields) + { + foreach ($customFields as $field) { + $customField = CustomField::find($field['id']); + $customFieldValue = $this->fields()->firstOrCreate([ + 'custom_field_id' => $customField->id, + 'type' => $customField->type, + 'company_id' => $this->company_id + ]); + + $type = getCustomFieldValueKey($customField->type); + $customFieldValue->$type = $field['value']; + $customFieldValue->save(); + } + } +} diff --git a/app/Unit.php b/app/Unit.php deleted file mode 100644 index 9f504376..00000000 --- a/app/Unit.php +++ /dev/null @@ -1,26 +0,0 @@ -hasMany(Item::class); - } - - public function company() - { - return $this->belongsTo(Company::class); - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('company_id', $company_id); - } -} diff --git a/app/User.php b/app/User.php deleted file mode 100644 index c3d93b45..00000000 --- a/app/User.php +++ /dev/null @@ -1,263 +0,0 @@ -where('email', $username)->first(); - } - - public function isAdmin() - { - return ($this->role == 'admin'); - } - - public static function login($request) - { - $remember = $request->remember; - $email = $request->email; - $password = $request->password; - return (\Auth::attempt(array('email' => $email, 'password' => $password), $remember)); - } - - public function getFormattedCreatedAtAttribute($value) - { - $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); - return Carbon::parse($this->created_at)->format($dateFormat); - } - - public function estimates() - { - return $this->hasMany(Estimate::class); - } - - public function currency() - { - return $this->belongsTo(Currency::class); - } - - public function company() - { - return $this->belongsTo(Company::class); - } - - public function addresses() - { - return $this->hasMany(Address::class); - } - - public function expenses() - { - return $this->hasMany(Expense::class); - } - - public function billingAddress() - { - return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE); - } - - public function shippingAddress() - { - return $this->hasOne(Address::class)->where('type', Address::SHIPPING_TYPE); - } - - public function payments() - { - return $this->hasMany(Payment::class); - } - - public function invoices() - { - return $this->hasMany(Invoice::class); - } - - /** - * Override the mail body for reset password notification mail. - */ - public function sendPasswordResetNotification($token) - { - $this->notify(new MailResetPasswordNotification($token)); - } - - public function scopeWhereOrder($query, $orderByField, $orderBy) - { - $query->orderBy($orderByField, $orderBy); - } - - public function scopeWhereSearch($query, $search) - { - foreach (explode(' ', $search) as $term) { - $query->where(function ($query) use ($term) { - $query->where('name', 'LIKE', '%'.$term.'%') - ->orWhere('company_name', 'LIKE', '%'.$term.'%'); - }); - } - } - - public function scopeWhereContactName($query, $contactName) - { - return $query->where('contact_name', 'LIKE', '%'.$contactName.'%'); - } - - public function scopeWhereDisplayName($query, $displayName) - { - return $query->where('name', 'LIKE', '%'.$displayName.'%'); - } - - public function scopeWherePhone($query, $phone) - { - return $query->where('phone', 'LIKE', '%'.$phone.'%'); - } - - public function scopeCustomer($query) - { - return $query->where('role', 'customer'); - } - - public function scopeApplyFilters($query, array $filters) - { - $filters = collect($filters); - - if ($filters->get('search')) { - $query->whereSearch($filters->get('search')); - } - - if ($filters->get('contact_name')) { - $query->whereContactName($filters->get('contact_name')); - } - - if ($filters->get('display_name')) { - $query->whereDisplayName($filters->get('display_name')); - } - - if ($filters->get('phone')) { - $query->wherePhone($filters->get('phone')); - } - - if ($filters->get('orderByField') || $filters->get('orderBy')) { - $field = $filters->get('orderByField') ? $filters->get('orderByField') : 'name'; - $orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'asc'; - $query->whereOrder($field, $orderBy); - } - } - - public function scopeWhereCompany($query, $company_id) - { - $query->where('users.company_id', $company_id); - } - - public function scopeApplyInvoiceFilters($query, array $filters) - { - $filters = collect($filters); - - if ($filters->get('from_date') && $filters->get('to_date')) { - $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); - $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); - $query->invoicesBetween($start, $end); - } - } - - public function scopeInvoicesBetween($query, $start, $end) - { - $query->whereHas('invoices', function ($query) use ($start, $end) { - $query->whereBetween( - 'invoice_date', - [$start->format('Y-m-d'), $end->format('Y-m-d')] - ); - }); - } - - public static function deleteCustomer($id) - { - $customer = self::find($id); - - if ($customer->estimates()->exists()) { - $customer->estimates()->delete(); - } - - if ($customer->invoices()->exists()) { - $customer->invoices()->delete(); - } - - if ($customer->payments()->exists()) { - $customer->payments()->delete(); - } - - if ($customer->addresses()->exists()) { - $customer->addresses()->delete(); - } - - $customer->delete(); - - return true; - } - - public function getAvatarAttribute() - { - $avatar = $this->getMedia('admin_avatar')->first(); - if ($avatar) { - return asset($avatar->getUrl()); - } - return ; - } -} diff --git a/composer.json b/composer.json index f5e52922..e5d4286e 100644 --- a/composer.json +++ b/composer.json @@ -8,39 +8,43 @@ "license": "MIT", "type": "project", "require": { - "php": "^7.2", - "aws/aws-sdk-php": "^3.137", + "php": "^7.3", + "aws/aws-sdk-php": "^3.142", "barryvdh/laravel-dompdf": "^0.8.1", "doctrine/dbal": "^2.10", "fideloper/proxy": "^4.0", - "guzzlehttp/guzzle": "^6.3", + "fruitcake/laravel-cors": "^1.0", + "guzzlehttp/guzzle": "^7.0.1", "intervention/image": "^2.3", - "laravel/framework": "^6.0", + "laravel/framework": "^8.0", "laravel/helpers": "^1.1", - "laravel/passport": "^7.5", - "laravel/socialite": "^4.2.0", - "laravel/tinker": "^1.0", - "spatie/laravel-medialibrary": "^7.0.0", - "spatie/laravel-permission": "^3.0" + "laravel/sanctum": "^2.6", + "laravel/tinker": "^2.0", + "laravel/ui": "^3.0", + "league/flysystem-aws-s3-v3": "^1.0", + "spatie/flysystem-dropbox": "^1.2", + "spatie/laravel-backup": "^6.11", + "spatie/laravel-medialibrary": "^8.7", + "vinkla/hashids": "^9.0" }, "require-dev": { - "beyondcode/laravel-dump-server": "^1.0", - "symfony/css-selector": "3.1.*", - "symfony/dom-crawler": "3.1.*", "barryvdh/laravel-ide-helper": "^2.6", - "facade/ignition": "^1.4", - "fzaninotto/faker": "^1.4", - "mockery/mockery": "^1.0", - "nunomaduro/collision": "^3.0", - "phpunit/phpunit": "^8.0", - "laravel/browser-kit-testing": "1.*" + "beyondcode/laravel-dump-server": "^1.0", + "facade/ignition": "^2.3.6", + "fzaninotto/faker": "^1.9.1", + "jasonmccreary/laravel-test-assertions": "^1.0", + "mockery/mockery": "^1.3.1", + "nunomaduro/collision": "^5.0", + "pestphp/pest": "^0.3.1", + "pestphp/pest-plugin-faker": "^0.3.0", + "pestphp/pest-plugin-laravel": "^0.3.0", + "phpunit/phpunit": "^9.0" }, "autoload": { - "classmap": [ - "database" - ], "psr-4": { - "Crater\\": "app/" + "Crater\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" }, "files": [ "app/Space/helpers.php" @@ -54,15 +58,15 @@ "minimum-stability": "dev", "prefer-stable": true, "scripts": { - "post-root-package-install": [ - "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "php artisan key:generate --ansi" - ], "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" ] }, "config": { diff --git a/composer.lock b/composer.lock index 0ce492f4..a1b8d2a3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,72 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9eaf6e40cdc2feea15efb8f4c2c0d185", + "content-hash": "4b6f4cd954fe09e6ce351866399d7dcf", "packages": [ { - "name": "aws/aws-sdk-php", - "version": "3.137.6", + "name": "asm89/stack-cors", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "24cdfb2d9538a2a30744708d75be1e75f302283b" + "url": "https://github.com/asm89/stack-cors.git", + "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/24cdfb2d9538a2a30744708d75be1e75f302283b", - "reference": "24cdfb2d9538a2a30744708d75be1e75f302283b", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08", + "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0 || ^4.8.10", + "squizlabs/php_codesniffer": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/Asm89/Stack/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "time": "2019-12-24T22:41:47+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.155.2", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "5a3afb3b3171a133a491d3457e1e7dcaa45ac954" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5a3afb3b3171a133a491d3457e1e7dcaa45ac954", + "reference": "5a3afb3b3171a133a491d3457e1e7dcaa45ac954", "shasum": "" }, "require": { @@ -40,6 +92,7 @@ "ext-pcntl": "*", "ext-sockets": "*", "nette/neon": "^2.3", + "paragonie/random_compat": ">= 2", "phpunit/phpunit": "^4.8.35|^5.4.3", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", @@ -88,25 +141,25 @@ "s3", "sdk" ], - "time": "2020-05-08T18:20:12+00:00" + "time": "2020-09-24T18:13:54+00:00" }, { "name": "barryvdh/laravel-dompdf", - "version": "v0.8.6", + "version": "v0.8.7", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8" + "reference": "30310e0a675462bf2aa9d448c8dcbf57fbcc517d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/d7108f78cf5254a2d8c224542967f133e5a6d4e8", - "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/30310e0a675462bf2aa9d448c8dcbf57fbcc517d", + "reference": "30310e0a675462bf2aa9d448c8dcbf57fbcc517d", "shasum": "" }, "require": { "dompdf/dompdf": "^0.8", - "illuminate/support": "^5.5|^6|^7", + "illuminate/support": "^5.5|^6|^7|^8", "php": ">=7" }, "type": "library", @@ -144,70 +197,53 @@ "laravel", "pdf" ], - "time": "2020-02-25T20:44:34+00:00" + "time": "2020-09-07T11:50:18+00:00" }, { - "name": "defuse/php-encryption", - "version": "v2.2.1", + "name": "brick/math", + "version": "0.9.1", "source": { "type": "git", - "url": "https://github.com/defuse/php-encryption.git", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" + "url": "https://github.com/brick/math.git", + "reference": "283a40c901101e66de7061bd359252c013dcc43c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", + "url": "https://api.github.com/repos/brick/math/zipball/283a40c901101e66de7061bd359252c013dcc43c", + "reference": "283a40c901101e66de7061bd359252c013dcc43c", "shasum": "" }, "require": { - "ext-openssl": "*", - "paragonie/random_compat": ">= 2", - "php": ">=5.4.0" + "ext-json": "*", + "php": "^7.1|^8.0" }, "require-dev": { - "nikic/php-parser": "^2.0|^3.0|^4.0", - "phpunit/phpunit": "^4|^5" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15|^8.5", + "vimeo/psalm": "^3.5" }, - "bin": [ - "bin/generate-defuse-key" - ], "type": "library", "autoload": { "psr-4": { - "Defuse\\Crypto\\": "src" + "Brick\\Math\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Taylor Hornby", - "email": "taylor@defuse.ca", - "homepage": "https://defuse.ca/" - }, - { - "name": "Scott Arciszewski", - "email": "info@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "Secure PHP Encryption Library", + "description": "Arbitrary-precision arithmetic library", "keywords": [ - "aes", - "authenticated encryption", - "cipher", - "crypto", - "cryptography", - "encrypt", - "encryption", - "openssl", - "security", - "symmetric key cryptography" + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" ], - "time": "2018-07-24T23:27:56+00:00" + "time": "2020-08-18T23:57:15+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -244,20 +280,20 @@ }, { "name": "doctrine/cache", - "version": "1.10.0", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" + "reference": "13e3381b25847283a91948d04640543941309727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", + "url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727", + "reference": "13e3381b25847283a91948d04640543941309727", "shasum": "" }, "require": { - "php": "~7.1" + "php": "~7.1 || ^8.0" }, "conflict": { "doctrine/common": ">2.2,<2.4" @@ -322,36 +358,37 @@ "redis", "xcache" ], - "time": "2019-11-29T15:36:20+00:00" + "time": "2020-07-07T18:54:01+00:00" }, { "name": "doctrine/dbal", - "version": "2.10.2", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8" + "reference": "0d4e1a8b29dd987704842f0465aded378f441dca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8", - "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0d4e1a8b29dd987704842f0465aded378f441dca", + "reference": "0d4e1a8b29dd987704842f0465aded378f441dca", "shasum": "" }, "require": { "doctrine/cache": "^1.0", "doctrine/event-manager": "^1.0", "ext-pdo": "*", - "php": "^7.2" + "php": "^7.3" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.1", "jetbrains/phpstorm-stubs": "^2019.1", "nikic/php-parser": "^4.4", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^8.4.1", + "phpstan/phpstan": "^0.12.40", + "phpunit/phpunit": "^9.3", + "psalm/plugin-phpunit": "^0.10.0", "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "^3.11" + "vimeo/psalm": "^3.14.2" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -362,8 +399,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -416,24 +452,24 @@ "sqlserver", "sqlsrv" ], - "time": "2020-04-20T17:19:26+00:00" + "time": "2020-09-20T23:24:53+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "629572819973f13486371cb611386eb17851e85c" + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", - "reference": "629572819973f13486371cb611386eb17851e85c", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9@dev" @@ -492,37 +528,41 @@ "event system", "events" ], - "time": "2019-11-10T09:48:07+00:00" + "time": "2020-05-29T18:28:51+00:00" }, { "name": "doctrine/inflector", - "version": "1.3.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -551,32 +591,38 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ "inflection", - "pluralize", - "singularize", - "string" + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], - "time": "2019-10-30T19:59:35+00:00" + "time": "2020-05-29T15:13:26+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -621,37 +667,39 @@ "parser", "php" ], - "time": "2019-10-30T14:39:59+00:00" + "time": "2020-05-25T17:44:05+00:00" }, { "name": "dompdf/dompdf", - "version": "v0.8.5", + "version": "v0.8.6", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" + "reference": "db91d81866c69a42dad1d2926f61515a1e3f42c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", - "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/db91d81866c69a42dad1d2926f61515a1e3f42c5", + "reference": "db91d81866c69a42dad1d2926f61515a1e3f42c5", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "^0.5.1", + "phenx/php-font-lib": "^0.5.2", "phenx/php-svg-lib": "^0.3.3", "php": "^7.1" }, "require-dev": { + "mockery/mockery": "^1.3", "phpunit/phpunit": "^7.5", "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", "ext-gmagick": "Improves image processing performance", - "ext-imagick": "Improves image processing performance" + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" }, "type": "library", "extra": { @@ -687,34 +735,33 @@ ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2020-02-20T03:52:51+00:00" + "time": "2020-08-30T22:54:22+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" + "reference": "fa4e95ff5a7f1d62c3fbc05c32729b7f3ca14b52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/fa4e95ff5a7f1d62c3fbc05c32729b7f3ca14b52", + "reference": "fa4e95ff5a7f1d62c3fbc05c32729b7f3ca14b52", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { + "phpstan/phpstan": "^0.11", "phpunit/phpunit": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -725,11 +772,6 @@ "MIT" ], "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, { "name": "Chris Tankersley", "email": "chris@ctankersley.com", @@ -741,20 +783,20 @@ "cron", "schedule" ], - "time": "2019-03-31T00:38:28+00:00" + "time": "2020-08-21T02:30:13+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.17", + "version": "2.1.21", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" + "reference": "563d0cdde5d862235ffe24a158497f4d490191b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/563d0cdde5d862235ffe24a158497f4d490191b5", + "reference": "563d0cdde5d862235ffe24a158497f4d490191b5", "shasum": "" }, "require": { @@ -778,7 +820,7 @@ }, "autoload": { "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" + "Egulias\\EmailValidator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -799,20 +841,20 @@ "validation", "validator" ], - "time": "2020-02-13T22:36:52+00:00" + "time": "2020-09-19T14:37:56+00:00" }, { "name": "fideloper/proxy", - "version": "4.3.0", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a" + "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", - "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8", + "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8", "shasum": "" }, "require": { @@ -853,91 +895,271 @@ "proxy", "trusted proxy" ], - "time": "2020-02-22T01:51:47+00:00" + "time": "2020-06-23T01:36:47+00:00" }, { - "name": "firebase/php-jwt", - "version": "v5.2.0", + "name": "fruitcake/laravel-cors", + "version": "v1.0.6", "source": { "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "1d127dbec313e2e227d65e0c483765d8d7559bf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/1d127dbec313e2e227d65e0c483765d8d7559bf6", + "reference": "1d127dbec313e2e227d65e0c483765d8d7559bf6", "shasum": "" }, "require": { - "php": ">=5.3.0" + "asm89/stack-cors": "^1.3", + "illuminate/contracts": "^5.5|^6.0|^7.0|^8.0", + "illuminate/support": "^5.5|^6.0|^7.0|^8.0", + "php": ">=7", + "symfony/http-foundation": "^3.3|^4.0|^5.0", + "symfony/http-kernel": "^3.3|^4.0|^5.0" }, "require-dev": { - "phpunit/phpunit": ">=4.8 <=9" + "laravel/framework": "^5.5|^6.0|^7.0|^8.0", + "orchestra/testbench": "^3.5|^4.0|^5.0|^6.0", + "phpro/grumphp": "^0.16|^0.17", + "phpunit/phpunit": "^6.0|^7.0|^8.0", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, "autoload": { "psr-4": { - "Firebase\\JWT\\": "src" + "Fruitcake\\Cors\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" }, { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", "keywords": [ - "jwt", - "php" + "api", + "cors", + "crossdomain", + "laravel" ], - "time": "2020-03-25T18:49:23+00:00" + "time": "2020-04-28T08:47:37+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.5.3", + "name": "graham-campbell/guzzle-factory", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e" + "url": "https://github.com/GrahamCampbell/Guzzle-Factory.git", + "reference": "4914d47f075157963c7ba86fb839f235034edf0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e", - "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e", + "url": "https://api.github.com/repos/GrahamCampbell/Guzzle-Factory/zipball/4914d47f075157963c7ba86fb839f235034edf0c", + "reference": "4914d47f075157963c7ba86fb839f235034edf0c", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^7.0.1", + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "graham-campbell/analyzer": "^3.0", + "phpunit/phpunit": "^8.5 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\GuzzleFactory\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Provides A Simple Guzzle Factory With Good Defaults", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Guzzle", + "Guzzle Factory", + "Guzzle-Factory", + "http" + ], + "time": "2020-07-22T18:54:48+00:00" + }, + { + "name": "graham-campbell/manager", + "version": "v4.6.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Laravel-Manager.git", + "reference": "e18c29f98adb770bd890b6d66b27ba4730272599" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Manager/zipball/e18c29f98adb770bd890b6d66b27ba4730272599", + "reference": "e18c29f98adb770bd890b6d66b27ba4730272599", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^5.5 || ^6.0 || ^7.0 || ^8.0", + "illuminate/support": "^5.5 || ^6.0 || ^7.0 || ^8.0", + "php": "^7.1.3 || ^8.0" + }, + "require-dev": { + "graham-campbell/analyzer": "^2.4 || ^3.0", + "graham-campbell/testbench-core": "^3.2", + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^6.5 || ^7.5 || ^8.4 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\Manager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Manager Provides Some Manager Functionality For Laravel", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Laravel Manager", + "Laravel-Manager", + "connector", + "framework", + "interface", + "laravel", + "manager" + ], + "time": "2020-07-25T18:02:52+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb", + "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "phpoption/phpoption": "^1.7.3" + }, + "require-dev": { + "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "time": "2020-04-13T13:17:36+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.1.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7edeaa528fbb57123028bd5a76b9ce9540194e26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7edeaa528fbb57123028bd5a76b9ce9540194e26", + "reference": "7edeaa528fbb57123028bd5a76b9ce9540194e26", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.11" + "php": "^7.2.5", + "psr/http-client": "^1.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "php-http/client-integration-tests": "dev-phpunit8", + "phpunit/phpunit": "^8.5.5", "psr/log": "^1.1" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5-dev" + "dev-master": "7.1-dev" } }, "autoload": { @@ -957,6 +1179,11 @@ "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "Guzzle is a PHP HTTP client library", @@ -967,10 +1194,12 @@ "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], - "time": "2020-04-18T10:38:46+00:00" + "time": "2020-09-22T09:10:04+00:00" }, { "name": "guzzlehttp/promises", @@ -1094,6 +1323,73 @@ ], "time": "2019-07-01T23:21:34+00:00" }, + { + "name": "hashids/hashids", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/vinkla/hashids.git", + "reference": "43bb2407f16a631f0128f47bcb67ff986c63dde2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vinkla/hashids/zipball/43bb2407f16a631f0128f47bcb67ff986c63dde2", + "reference": "43bb2407f16a631f0128f47bcb67ff986c63dde2", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.0" + }, + "suggest": { + "ext-bcmath": "Required to use BC Math arbitrary precision mathematics (*).", + "ext-gmp": "Required to use GNU multiple precision mathematics (*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Hashids\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivan Akimov", + "email": "ivan@barreleye.com", + "homepage": "https://twitter.com/IvanAkimov" + }, + { + "name": "Vincent Klaiber", + "email": "hello@doubledip.se", + "homepage": "https://doubledip.se" + } + ], + "description": "Generate short, unique, non-sequential ids (like YouTube and Bitly) from numbers", + "homepage": "http://hashids.org/php", + "keywords": [ + "bitly", + "decode", + "encode", + "hash", + "hashid", + "hashids", + "ids", + "obfuscate", + "youtube" + ], + "time": "2019-04-03T13:40:29+00:00" + }, { "name": "intervention/image", "version": "2.5.1", @@ -1164,146 +1460,62 @@ ], "time": "2019-11-02T09:15:47+00:00" }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "abandoned": "php-parallel-lint/php-console-color", - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "abandoned": "php-parallel-lint/php-console-highlighter", - "time": "2018-09-29T18:48:56+00:00" - }, { "name": "laravel/framework", - "version": "v6.18.11", + "version": "v8.6.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "73bc10bb23aab7539c8ffae6d5dc3c4b277de557" + "reference": "a71952a6dba55de0bb11b5fbbd84874eda2a755c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/73bc10bb23aab7539c8ffae6d5dc3c4b277de557", - "reference": "73bc10bb23aab7539c8ffae6d5dc3c4b277de557", + "url": "https://api.github.com/repos/laravel/framework/zipball/a71952a6dba55de0bb11b5fbbd84874eda2a755c", + "reference": "a71952a6dba55de0bb11b5fbbd84874eda2a755c", "shasum": "" }, "require": { - "doctrine/inflector": "^1.1", - "dragonmantank/cron-expression": "^2.0", + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^3.0", "egulias/email-validator": "^2.1.10", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "league/commonmark": "^1.3", - "league/flysystem": "^1.0.8", - "monolog/monolog": "^1.12|^2.0", - "nesbot/carbon": "^2.0", - "opis/closure": "^3.1", - "php": "^7.2", + "league/flysystem": "^1.0.34", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.17", + "opis/closure": "^3.5.3", + "php": "^7.3", "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", + "ramsey/uuid": "^4.0", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.3.4", - "symfony/debug": "^4.3.4", - "symfony/finder": "^4.3.4", - "symfony/http-foundation": "^4.3.4", - "symfony/http-kernel": "^4.3.4", - "symfony/process": "^4.3.4", - "symfony/routing": "^4.3.4", - "symfony/var-dumper": "^4.3.4", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^3.3" + "symfony/console": "^5.1", + "symfony/error-handler": "^5.1", + "symfony/finder": "^5.1", + "symfony/http-foundation": "^5.1", + "symfony/http-kernel": "^5.1", + "symfony/mime": "^5.1", + "symfony/process": "^5.1", + "symfony/routing": "^5.1", + "symfony/var-dumper": "^5.1", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.2", + "voku/portable-ascii": "^1.4.8" }, "conflict": { "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", "illuminate/bus": "self.version", "illuminate/cache": "self.version", + "illuminate/collections": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", "illuminate/container": "self.version", @@ -1316,6 +1528,7 @@ "illuminate/hashing": "self.version", "illuminate/http": "self.version", "illuminate/log": "self.version", + "illuminate/macroable": "self.version", "illuminate/mail": "self.version", "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", @@ -1325,6 +1538,7 @@ "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" @@ -1333,19 +1547,19 @@ "aws/aws-sdk-php": "^3.0", "doctrine/dbal": "^2.6", "filp/whoops": "^2.4", - "guzzlehttp/guzzle": "^6.3|^7.0", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.3.1", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "^4.0", + "orchestra/testbench-core": "^6.0", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^7.5.15|^8.4|^9.0", + "phpunit/phpunit": "^8.4|^9.0", "predis/predis": "^1.1.1", - "symfony/cache": "^4.3.4" + "symfony/cache": "^5.1" }, "suggest": { "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", @@ -1353,33 +1567,42 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "filp/whoops": "Required for friendly error pages in development (^2.4).", "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", - "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0|^7.0).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "mockery/mockery": "Required to use mocking (^1.3.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.0).", + "predis/predis": "Required to use the predis connector (^1.1.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.1).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { - "Illuminate\\": "src/Illuminate/" + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -1398,33 +1621,33 @@ "framework", "laravel" ], - "time": "2020-04-28T15:18:58+00:00" + "time": "2020-09-22T13:42:02+00:00" }, { "name": "laravel/helpers", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/laravel/helpers.git", - "reference": "1f978fc5dad9f7f906b18242c654252615201de4" + "reference": "b4b8d6e84a6306fc88870f61a244d8c537779f2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/helpers/zipball/1f978fc5dad9f7f906b18242c654252615201de4", - "reference": "1f978fc5dad9f7f906b18242c654252615201de4", + "url": "https://api.github.com/repos/laravel/helpers/zipball/b4b8d6e84a6306fc88870f61a244d8c537779f2d", + "reference": "b4b8d6e84a6306fc88870f61a244d8c537779f2d", "shasum": "" }, "require": { - "illuminate/support": "~5.8.0|^6.0|^7.0", + "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0", "php": ">=7.1.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -1451,59 +1674,48 @@ "helpers", "laravel" ], - "time": "2020-03-03T13:52:16+00:00" + "time": "2020-08-25T17:54:37+00:00" }, { - "name": "laravel/passport", - "version": "v7.5.1", + "name": "laravel/sanctum", + "version": "v2.6.0", "source": { "type": "git", - "url": "https://github.com/laravel/passport.git", - "reference": "d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08" + "url": "https://github.com/laravel/sanctum.git", + "reference": "a38ffd5f419dbaaefc4cb81c1bdde12a02c4854e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08", - "reference": "d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/a38ffd5f419dbaaefc4cb81c1bdde12a02c4854e", + "reference": "a38ffd5f419dbaaefc4cb81c1bdde12a02c4854e", "shasum": "" }, "require": { "ext-json": "*", - "firebase/php-jwt": "~3.0|~4.0|~5.0", - "guzzlehttp/guzzle": "~6.0", - "illuminate/auth": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/console": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/container": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/cookie": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/http": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "league/oauth2-server": "^7.0", - "php": ">=7.1", - "phpseclib/phpseclib": "^2.0", - "symfony/psr-http-message-bridge": "~1.0", - "zendframework/zend-diactoros": "~1.0|~2.0" + "illuminate/contracts": "^6.9|^7.0|^8.0", + "illuminate/database": "^6.9|^7.0|^8.0", + "illuminate/support": "^6.9|^7.0|^8.0", + "php": "^7.2" }, "require-dev": { "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.4|^8.0" + "orchestra/testbench": "^4.0|^5.0|^6.0", + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ - "Laravel\\Passport\\PassportServiceProvider" + "Laravel\\Sanctum\\SanctumServiceProvider" ] } }, "autoload": { "psr-4": { - "Laravel\\Passport\\": "src/" + "Laravel\\Sanctum\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1516,110 +1728,47 @@ "email": "taylor@laravel.com" } ], - "description": "Laravel Passport provides OAuth2 server support to Laravel.", + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", "keywords": [ + "auth", "laravel", - "oauth", - "passport" + "sanctum" ], - "time": "2019-10-08T16:45:24+00:00" - }, - { - "name": "laravel/socialite", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/socialite.git", - "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/4bd66ee416fea04398dee5b8c32d65719a075db4", - "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "~6.0", - "illuminate/http": "~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.7.0|~5.8.0|^6.0|^7.0", - "league/oauth1-client": "~1.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/contracts": "~5.7.0|~5.8.0|^6.0|^7.0", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Socialite\\SocialiteServiceProvider" - ], - "aliases": { - "Socialite": "Laravel\\Socialite\\Facades\\Socialite" - } - } - }, - "autoload": { - "psr-4": { - "Laravel\\Socialite\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", - "homepage": "https://laravel.com", - "keywords": [ - "laravel", - "oauth" - ], - "time": "2020-02-04T15:30:01+00:00" + "time": "2020-09-01T13:48:09+00:00" }, { "name": "laravel/tinker", - "version": "v1.0.10", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" + "reference": "58424c24e8aec31c3a3ac54eb3adb15e8a0a067b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "url": "https://api.github.com/repos/laravel/tinker/zipball/58424c24e8aec31c3a3ac54eb3adb15e8a0a067b", + "reference": "58424c24e8aec31c3a3ac54eb3adb15e8a0a067b", "shasum": "" }, "require": { - "illuminate/console": "~5.1|^6.0", - "illuminate/contracts": "~5.1|^6.0", - "illuminate/support": "~5.1|^6.0", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" + "illuminate/console": "^6.0|^7.0|^8.0", + "illuminate/contracts": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "php": "^7.2", + "psy/psysh": "^0.10.3", + "symfony/var-dumper": "^4.3|^5.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^8.4|^9.0" }, "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -1649,94 +1798,93 @@ "laravel", "psysh" ], - "time": "2019-08-07T15:10:45+00:00" + "time": "2020-08-11T19:28:08+00:00" }, { - "name": "lcobucci/jwt", - "version": "3.3.1", + "name": "laravel/ui", + "version": "v3.0.0", "source": { "type": "git", - "url": "https://github.com/lcobucci/jwt.git", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" + "url": "https://github.com/laravel/ui.git", + "reference": "ff6af4f0bc5a5bfe73352cdc03dbfffc4ace92d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "url": "https://api.github.com/repos/laravel/ui/zipball/ff6af4f0bc5a5bfe73352cdc03dbfffc4ace92d8", + "reference": "ff6af4f0bc5a5bfe73352cdc03dbfffc4ace92d8", "shasum": "" }, "require": { - "ext-mbstring": "*", - "ext-openssl": "*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "^5.7 || ^7.3", - "squizlabs/php_codesniffer": "~2.3" + "illuminate/console": "^8.0", + "illuminate/filesystem": "^8.0", + "illuminate/support": "^8.0", + "php": "^7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] } }, "autoload": { "psr-4": { - "Lcobucci\\JWT\\": "src" + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Luís Otávio Cobucci Oblonczyk", - "email": "lcobucci@gmail.com", - "role": "Developer" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "description": "Laravel UI utilities and presets.", "keywords": [ - "JWS", - "jwt" + "laravel", + "ui" ], - "time": "2019-05-24T18:30:49+00:00" + "time": "2020-09-11T15:34:08+00:00" }, { "name": "league/commonmark", - "version": "1.4.2", + "version": "1.5.5", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "9e780d972185e4f737a03bade0fd34a9e67bbf31" + "reference": "45832dfed6007b984c0d40addfac48d403dc6432" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/9e780d972185e4f737a03bade0fd34a9e67bbf31", - "reference": "9e780d972185e4f737a03bade0fd34a9e67bbf31", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/45832dfed6007b984c0d40addfac48d403dc6432", + "reference": "45832dfed6007b984c0d40addfac48d403dc6432", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "conflict": { "scrutinizer/ocular": "1.7.*" }, "require-dev": { "cebe/markdown": "~1.0", - "commonmark/commonmark.js": "0.29.1", + "commonmark/commonmark.js": "0.29.2", "erusev/parsedown": "~1.0", "ext-json": "*", "github/gfm": "0.29.0", "michelf/php-markdown": "~1.4", "mikehaertl/php-shellcommand": "^1.4", "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", "scrutinizer/ocular": "^1.5", "symfony/finder": "^4.2" }, @@ -1744,11 +1892,6 @@ "bin/commonmark" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, "autoload": { "psr-4": { "League\\CommonMark\\": "src" @@ -1778,82 +1921,33 @@ "md", "parser" ], - "time": "2020-04-24T13:39:56+00:00" - }, - { - "name": "league/event", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/event.git", - "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119", - "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "~1.0.1", - "phpspec/phpspec": "^2.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Event\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Event package", - "keywords": [ - "emitter", - "event", - "listener" - ], - "time": "2018-11-26T11:52:41+00:00" + "time": "2020-09-13T14:44:46+00:00" }, { "name": "league/flysystem", - "version": "1.0.67", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e" + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", - "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a", + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": ">=5.5.9" + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" }, "conflict": { "league/flysystem-sftp": "<1.0.6" }, "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.26" + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" }, "suggest": { "ext-fileinfo": "Required for MimeType", @@ -1912,32 +2006,79 @@ "sftp", "storage" ], - "time": "2020-04-16T13:21:26+00:00" + "time": "2020-08-23T07:39:11+00:00" }, { - "name": "league/glide", - "version": "1.5.0", + "name": "league/flysystem-aws-s3-v3", + "version": "1.0.28", "source": { "type": "git", - "url": "https://github.com/thephpleague/glide.git", - "reference": "a5477e9e822ed57b39861a17092b92553634932d" + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "af7384a12f7cd7d08183390d930c9d0ec629c990" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide/zipball/a5477e9e822ed57b39861a17092b92553634932d", - "reference": "a5477e9e822ed57b39861a17092b92553634932d", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/af7384a12f7cd7d08183390d930c9d0ec629c990", + "reference": "af7384a12f7cd7d08183390d930c9d0ec629c990", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "^3.20.0", + "league/flysystem": "^1.0.40", + "php": ">=5.5.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3v3\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "time": "2020-08-22T08:43:01+00:00" + }, + { + "name": "league/glide", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/glide.git", + "reference": "8759b8edfe953c8e6aceb45b3647fb7ae5349a0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/glide/zipball/8759b8edfe953c8e6aceb45b3647fb7ae5349a0c", + "reference": "8759b8edfe953c8e6aceb45b3647fb7ae5349a0c", "shasum": "" }, "require": { "intervention/image": "^2.4", "league/flysystem": "^1.0", - "php": "^5.5 | ^7.0", + "php": "^7.2", "psr/http-message": "^1.0" }, "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/php-token-stream": "^1.4", - "phpunit/phpunit": "~4.4" + "mockery/mockery": "^1.2", + "phpunit/php-token-stream": "^3.1", + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -1973,40 +2114,34 @@ "manipulation", "processing" ], - "time": "2019-04-03T23:46:42+00:00" + "time": "2020-07-07T12:23:45+00:00" }, { - "name": "league/oauth1-client", - "version": "1.7.0", + "name": "league/mime-type-detection", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/oauth1-client.git", - "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647" + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ea2fbfc988bade315acd5967e6d02274086d0f28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/fca5f160650cb74d23fc11aa570dd61f86dcf647", - "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ea2fbfc988bade315acd5967e6d02274086d0f28", + "reference": "ea2fbfc988bade315acd5967e6d02274086d0f28", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0" + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" }, "require-dev": { - "mockery/mockery": "^0.9", - "phpunit/phpunit": "^4.0", - "squizlabs/php_codesniffer": "^2.0" + "phpstan/phpstan": "^0.12.36", + "phpunit/phpunit": "^8.5.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { - "League\\OAuth1\\": "src/" + "League\\MimeTypeDetection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2015,125 +2150,32 @@ ], "authors": [ { - "name": "Ben Corlett", - "email": "bencorlett@me.com", - "homepage": "http://www.webcomm.com.au", - "role": "Developer" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "OAuth 1.0 Client Library", - "keywords": [ - "Authentication", - "SSO", - "authorization", - "bitbucket", - "identity", - "idp", - "oauth", - "oauth1", - "single sign on", - "trello", - "tumblr", - "twitter" - ], - "time": "2016-08-17T00:36:58+00:00" - }, - { - "name": "league/oauth2-server", - "version": "7.4.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", - "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", - "shasum": "" - }, - "require": { - "defuse/php-encryption": "^2.1", - "ext-openssl": "*", - "lcobucci/jwt": "^3.2.2", - "league/event": "^2.1", - "php": ">=7.0.0", - "psr/http-message": "^1.0.1" - }, - "replace": { - "league/oauth2server": "*", - "lncd/oauth2": "*" - }, - "require-dev": { - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.3 || ^7.0", - "roave/security-advisories": "dev-master", - "zendframework/zend-diactoros": "^1.3.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\OAuth2\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Bilbie", - "email": "hello@alexbilbie.com", - "homepage": "http://www.alexbilbie.com", - "role": "Developer" - }, - { - "name": "Andy Millington", - "email": "andrew@noexceptions.io", - "homepage": "https://www.noexceptions.io", - "role": "Developer" - } - ], - "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", - "homepage": "https://oauth2.thephpleague.com/", - "keywords": [ - "Authentication", - "api", - "auth", - "authorisation", - "authorization", - "oauth", - "oauth 2", - "oauth 2.0", - "oauth2", - "protect", - "resource", - "secure", - "server" - ], - "time": "2019-05-05T09:22:01+00:00" + "description": "Mime-type detection for Flysystem", + "time": "2020-09-21T18:10:53+00:00" }, { "name": "maennchen/zipstream-php", - "version": "1.2.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "6373eefe0b3274d7b702d81f2c99aa977ff97dc2" + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/6373eefe0b3274d7b702d81f2c99aa977ff97dc2", - "reference": "6373eefe0b3274d7b702d81f2c99aa977ff97dc2", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58", "shasum": "" }, "require": { - "ext-mbstring": "*", "myclabs/php-enum": "^1.5", "php": ">= 7.1", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { "ext-zip": "*", @@ -2156,14 +2198,14 @@ "name": "Paul Duncan", "email": "pabs@pablotron.org" }, - { - "name": "Jesse Donat", - "email": "donatj@gmail.com" - }, { "name": "Jonatan Männchen", "email": "jonatan@maennchen.ch" }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, { "name": "András Kolesár", "email": "kolesar@kolesar.hu" @@ -2174,24 +2216,24 @@ "stream", "zip" ], - "time": "2019-07-17T11:01:58+00:00" + "time": "2020-05-30T13:11:16+00:00" }, { "name": "monolog/monolog", - "version": "2.0.2", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" + "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9eee5cec93dfb313a38b6b288741e84e53f02d5", + "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5", "shasum": "" }, "require": { - "php": "^7.2", + "php": ">=7.2", "psr/log": "^1.0.1" }, "provide": { @@ -2202,11 +2244,11 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^6.0", "graylog2/gelf-php": "^1.4.2", - "jakub-onderka/php-parallel-lint": "^0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", "phpspec/prophecy": "^1.6.1", - "phpunit/phpunit": "^8.3", + "phpunit/phpunit": "^8.5", "predis/predis": "^1.1", "rollbar/rollbar": "^1.3", "ruflin/elastica": ">=0.90 <3.0", @@ -2255,29 +2297,29 @@ "logging", "psr-3" ], - "time": "2019-12-20T14:22:59+00:00" + "time": "2020-07-23T08:41:23+00:00" }, { "name": "mtdowling/jmespath.php", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "52168cb9472de06979613d365c7f1ab8798be895" + "reference": "42dae2cbd13154083ca6d70099692fef8ca84bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/52168cb9472de06979613d365c7f1ab8798be895", - "reference": "52168cb9472de06979613d365c7f1ab8798be895", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/42dae2cbd13154083ca6d70099692fef8ca84bfb", + "reference": "42dae2cbd13154083ca6d70099692fef8ca84bfb", "shasum": "" }, "require": { - "php": ">=5.4.0", - "symfony/polyfill-mbstring": "^1.4" + "php": "^5.4 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" }, "require-dev": { - "composer/xdebug-handler": "^1.2", - "phpunit/phpunit": "^4.8.36|^7.5.15" + "composer/xdebug-handler": "^1.4", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" }, "bin": [ "bin/jp.php" @@ -2285,7 +2327,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2312,7 +2354,7 @@ "json", "jsonpath" ], - "time": "2019-12-30T18:03:34+00:00" + "time": "2020-07-31T21:01:56+00:00" }, { "name": "myclabs/php-enum", @@ -2362,16 +2404,16 @@ }, { "name": "nesbot/carbon", - "version": "2.33.0", + "version": "2.40.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b" + "reference": "d9a76d8b7eb0f97cf3a82529393245212f40ba3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b", - "reference": "4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d9a76d8b7eb0f97cf3a82529393245212f40ba3b", + "reference": "d9a76d8b7eb0f97cf3a82529393245212f40ba3b", "shasum": "" }, "require": { @@ -2383,9 +2425,10 @@ "require-dev": { "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", - "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "^2.8", - "phpstan/phpstan": "^0.11", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.35", "phpunit/phpunit": "^7.5 || ^8.0", "squizlabs/php_codesniffer": "^3.4" }, @@ -2395,12 +2438,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "2.x-dev", + "dev-3.x": "3.x-dev" }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -2430,20 +2479,20 @@ "datetime", "time" ], - "time": "2020-04-20T15:05:43+00:00" + "time": "2020-09-23T08:17:37+00:00" }, { "name": "nikic/php-parser", - "version": "v4.4.0", + "version": "v4.10.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120" + "reference": "1b479e7592812411c20c34d9ed33db3957bde66e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1b479e7592812411c20c34d9ed33db3957bde66e", + "reference": "1b479e7592812411c20c34d9ed33db3957bde66e", "shasum": "" }, "require": { @@ -2451,8 +2500,8 @@ "php": ">=7.0" }, "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2460,7 +2509,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -2482,20 +2531,20 @@ "parser", "php" ], - "time": "2020-04-10T16:34:50+00:00" + "time": "2020-09-23T18:23:49+00:00" }, { "name": "opis/closure", - "version": "3.5.1", + "version": "3.5.7", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" + "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", + "url": "https://api.github.com/repos/opis/closure/zipball/4531e53afe2fc660403e76fb7644e95998bff7bf", + "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf", "shasum": "" }, "require": { @@ -2543,7 +2592,7 @@ "serialization", "serialize" ], - "time": "2019-11-29T22:36:02+00:00" + "time": "2020-09-06T17:02:15+00:00" }, { "name": "paragonie/random_compat", @@ -2669,24 +2718,24 @@ }, { "name": "phpoption/phpoption", - "version": "1.7.3", + "version": "1.7.5", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", "shasum": "" }, "require": { "php": "^5.5.9 || ^7.0 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { @@ -2720,99 +2769,7 @@ "php", "type" ], - "time": "2020-03-21T18:07:53+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.27", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "time": "2020-04-04T23:17:33+00:00" + "time": "2020-07-20T17:29:33+00:00" }, { "name": "psr/container", @@ -2864,22 +2821,21 @@ "time": "2017-02-14T16:28:37+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.1", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": ">=7.2.0" }, "type": "library", "extra": { @@ -2889,7 +2845,7 @@ }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2902,18 +2858,62 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "Standard interfaces for event handling.", "keywords": [ - "factory", - "http", - "message", + "events", "psr", - "psr-17", - "psr-7", - "request", - "response" + "psr-14" ], - "time": "2019-04-30T12:38:16+00:00" + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "time": "2020-06-29T06:28:15+00:00" }, { "name": "psr/http-message", @@ -3062,32 +3062,30 @@ }, { "name": "psy/psysh", - "version": "v0.9.12", + "version": "v0.10.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560", + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" + "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", + "php": "^8.0 || ^7.0 || ^5.5.9", + "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", + "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "hoa/console": "3.17.*" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -3102,7 +3100,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-master": "0.10.x-dev" } }, "autoload": { @@ -3132,7 +3130,7 @@ "interactive", "shell" ], - "time": "2019-12-06T14:19:43+00:00" + "time": "2020-05-03T19:32:03+00:00" }, { "name": "ralouphie/getallheaders", @@ -3175,54 +3173,126 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "ramsey/uuid", - "version": "3.9.3", + "name": "ramsey/collection", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" + "url": "https://github.com/ramsey/collection.git", + "reference": "24d93aefb2cd786b7edd9f45b554aea20b28b9b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", + "url": "https://api.github.com/repos/ramsey/collection/zipball/24d93aefb2cd786b7edd9f45b554aea20b28b9b1", + "reference": "24d93aefb2cd786b7edd9f45b554aea20b28b9b1", "shasum": "" }, "require": { + "php": "^7.2 || ^8" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fzaninotto/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.6", + "mockery/mockery": "^1.3", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP 7.2+ library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "time": "2020-09-10T20:58:17+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "cd4032040a750077205918c86049aa0f43d22947" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947", + "reference": "cd4032040a750077205918c86049aa0f43d22947", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | 9.99.99", - "php": "^5.4 | ^7 | ^8", + "php": "^7.2 || ^8", + "ramsey/collection": "^1.0", "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", + "codeception/aspect-mock": "^3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", + "doctrine/annotations": "^1.8", + "goaop/framework": "^2", + "mockery/mockery": "^1.3", "moontoast/math": "^1.1", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" + "php-mock/php-mock-mockery": "^1.3", + "php-mock/php-mock-phpunit": "^2.5", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^0.17.1", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "psy/psysh": "^0.10.0", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "3.9.4" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -3237,42 +3307,27 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "homepage": "https://github.com/ramsey/uuid", "keywords": [ "guid", "identifier", "uuid" ], - "time": "2020-02-21T04:36:14+00:00" + "time": "2020-08-18T17:17:46+00:00" }, { "name": "sabberworm/php-css-parser", - "version": "8.3.0", + "version": "8.3.1", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796", "shasum": "" }, "require": { @@ -3304,7 +3359,166 @@ "parser", "stylesheet" ], - "time": "2019-02-22T07:42:52+00:00" + "time": "2020-06-01T09:10:00+00:00" + }, + { + "name": "spatie/db-dumper", + "version": "2.17.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/db-dumper.git", + "reference": "d23bcb566443e862a8dbb6dbd5e8da03aaf98e2a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/d23bcb566443e862a8dbb6dbd5e8da03aaf98e2a", + "reference": "d23bcb566443e862a8dbb6dbd5e8da03aaf98e2a", + "shasum": "" + }, + "require": { + "php": "^7.2", + "symfony/process": "^4.2|^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\DbDumper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Dump databases", + "homepage": "https://github.com/spatie/db-dumper", + "keywords": [ + "database", + "db-dumper", + "dump", + "mysqldump", + "spatie" + ], + "time": "2020-09-10T14:52:52+00:00" + }, + { + "name": "spatie/dropbox-api", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/dropbox-api.git", + "reference": "c294ce5ec69e16fb19879451e3a0944b7291f826" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/dropbox-api/zipball/c294ce5ec69e16fb19879451e3a0944b7291f826", + "reference": "c294ce5ec69e16fb19879451e3a0944b7291f826", + "shasum": "" + }, + "require": { + "graham-campbell/guzzle-factory": "^3.0||^4.0", + "guzzlehttp/guzzle": "^6.2||^7.0", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.15|^8.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Dropbox\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex.vanderbist@gmail.com", + "homepage": "https://spatie.be", + "role": "Developer" + }, + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A minimal implementation of Dropbox API v2", + "homepage": "https://github.com/spatie/dropbox-api", + "keywords": [ + "Dropbox-API", + "api", + "dropbox", + "spatie", + "v2" + ], + "time": "2020-09-25T08:07:36+00:00" + }, + { + "name": "spatie/flysystem-dropbox", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/flysystem-dropbox.git", + "reference": "512e8d59b3f9b8a6710f932c421032cb490e9869" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flysystem-dropbox/zipball/512e8d59b3f9b8a6710f932c421032cb490e9869", + "reference": "512e8d59b3f9b8a6710f932c421032cb490e9869", + "shasum": "" + }, + "require": { + "league/flysystem": "^1.0.20", + "php": "^7.0", + "spatie/dropbox-api": "^1.1.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\FlysystemDropbox\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex.vanderbist@gmail.com", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Flysystem Adapter for the Dropbox v2 API", + "homepage": "https://github.com/spatie/flysystem-dropbox", + "keywords": [ + "Flysystem", + "api", + "dropbox", + "flysystem-dropbox", + "spatie", + "v2" + ], + "time": "2019-12-04T08:18:17+00:00" }, { "name": "spatie/image", @@ -3411,32 +3625,107 @@ "time": "2019-11-25T12:29:24+00:00" }, { - "name": "spatie/laravel-medialibrary", - "version": "7.19.3", + "name": "spatie/laravel-backup", + "version": "6.11.2", "source": { "type": "git", - "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "7d6b634e0967f7399e1c7cd7b02c8b7da6f80c2d" + "url": "https://github.com/spatie/laravel-backup.git", + "reference": "aef15441393bb317341bfd69869c0e4cefc109be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/7d6b634e0967f7399e1c7cd7b02c8b7da6f80c2d", - "reference": "7d6b634e0967f7399e1c7cd7b02c8b7da6f80c2d", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/aef15441393bb317341bfd69869c0e4cefc109be", + "reference": "aef15441393bb317341bfd69869c0e4cefc109be", + "shasum": "" + }, + "require": { + "illuminate/console": "^5.8.15|^6.0|^7.0|^8.0", + "illuminate/contracts": "^5.8.15|^6.0|^7.0|^8.0", + "illuminate/events": "^5.8.15|^6.0|^7.0|^8.0", + "illuminate/filesystem": "^5.8.15|^6.0|^7.0|^8.0", + "illuminate/notifications": "^5.8.15|^6.0|^7.0|^8.0", + "illuminate/support": "^5.8.15|^6.0|^7.0|^8.0", + "league/flysystem": "^1.0.49", + "php": "^7.3", + "spatie/db-dumper": "^2.12", + "spatie/temporary-directory": "^1.1", + "symfony/finder": "^4.2|^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.16", + "laravel/slack-notification-channel": "^1.0", + "league/flysystem-aws-s3-v3": "^1.0", + "mockery/mockery": "^1.3", + "orchestra/testbench": "3.8.*|4.*|5.*|6.*", + "phpunit/phpunit": "^8.4|^9.0" + }, + "suggest": { + "laravel/slack-notification-channel": "Required for sending notifications via Slack" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Backup\\BackupServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\Backup\\": "src" + }, + "files": [ + "src/Helpers/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A Laravel package to backup your application", + "homepage": "https://github.com/spatie/laravel-backup", + "keywords": [ + "backup", + "database", + "laravel-backup", + "spatie" + ], + "time": "2020-09-08T17:37:56+00:00" + }, + { + "name": "spatie/laravel-medialibrary", + "version": "8.7.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-medialibrary.git", + "reference": "a2fc872e3daa9b8a3473eaf02d86a8ad0112fe1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/a2fc872e3daa9b8a3473eaf02d86a8ad0112fe1b", + "reference": "a2fc872e3daa9b8a3473eaf02d86a8ad0112fe1b", "shasum": "" }, "require": { "ext-fileinfo": "*", "ext-json": "*", - "illuminate/bus": "~5.8.35|^6.0|^7.0", - "illuminate/console": "~5.8.35|^6.0|^7.0", - "illuminate/database": "~5.8.35|^6.0|^7.0", - "illuminate/pipeline": "~5.8.35|^6.0|^7.0", - "illuminate/support": "~5.8.35|^6.0|^7.0", - "league/flysystem": "^1.0.8", - "maennchen/zipstream-php": "^1.0", - "php": "^7.2", + "illuminate/bus": "^6.18|^7.0|^8.0", + "illuminate/console": "^6.18|^7.0|^8.0", + "illuminate/database": "^6.18|^7.0|^8.0", + "illuminate/pipeline": "^6.18|^7.0|^8.0", + "illuminate/support": "^6.18|^7.0|^8.0", + "league/flysystem": "^1.0.64", + "maennchen/zipstream-php": "^1.0|^2.0", + "php": "^7.4", "spatie/image": "^1.4.0", - "spatie/pdf-to-image": "^2.0", "spatie/temporary-directory": "^1.1", "symfony/console": "^4.4|^5.0" }, @@ -3444,18 +3733,23 @@ "php-ffmpeg/php-ffmpeg": "<0.6.1" }, "require-dev": { + "aws/aws-sdk-php": "^3.133.11", "doctrine/dbal": "^2.5.2", "ext-pdo_sqlite": "*", - "guzzlehttp/guzzle": "^6.3", - "league/flysystem-aws-s3-v3": "^1.0.13", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^3.8|^4.0|^5.0", - "phpunit/phpunit": "^8.0", - "spatie/phpunit-snapshot-assertions": "^2.0" + "ext-zip": "*", + "guzzlehttp/guzzle": "^6.3|^7.0", + "league/flysystem-aws-s3-v3": "^1.0.23", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^4.0|^5.0|^6.0", + "php-ffmpeg/php-ffmpeg": "^0.16.0", + "phpunit/phpunit": "^9.1", + "spatie/pdf-to-image": "^2.0", + "spatie/phpunit-snapshot-assertions": "^4.0" }, "suggest": { "league/flysystem-aws-s3-v3": "Required to use AWS S3 file storage", - "php-ffmpeg/php-ffmpeg": "Required for generating video thumbnails" + "php-ffmpeg/php-ffmpeg": "Required for generating video thumbnails", + "spatie/pdf-to-image": "Required for generating thumbsnails of PDFs and SVGs" }, "type": "library", "extra": { @@ -3478,7 +3772,7 @@ { "name": "Freek Van der Herten", "email": "freek@spatie.be", - "homepage": "https://murze.be", + "homepage": "https://spatie.be", "role": "Developer" } ], @@ -3494,138 +3788,20 @@ "media", "spatie" ], - "time": "2020-03-09T16:43:55+00:00" - }, - { - "name": "spatie/laravel-permission", - "version": "3.11.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-permission.git", - "reference": "e90ed6242a8fa29735529160b9c21cb77b233e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/e90ed6242a8fa29735529160b9c21cb77b233e7f", - "reference": "e90ed6242a8fa29735529160b9c21cb77b233e7f", - "shasum": "" - }, - "require": { - "illuminate/auth": "^5.8|^6.0|^7.0", - "illuminate/container": "^5.8|^6.0|^7.0", - "illuminate/contracts": "^5.8|^6.0|^7.0", - "illuminate/database": "^5.8|^6.0|^7.0", - "php": "^7.2.5" - }, - "require-dev": { - "orchestra/testbench": "^3.8|^4.0|^5.0", - "phpunit/phpunit": "^8.0|^9.0", - "predis/predis": "^1.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Permission\\PermissionServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\Permission\\": "src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Permission handling for Laravel 5.8 and up", - "homepage": "https://github.com/spatie/laravel-permission", - "keywords": [ - "acl", - "laravel", - "permission", - "permissions", - "rbac", - "roles", - "security", - "spatie" - ], - "time": "2020-03-03T21:31:02+00:00" - }, - { - "name": "spatie/pdf-to-image", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/pdf-to-image.git", - "reference": "3b140c4ef9a8cbb72ac51592a3f13d6a6b6d969e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/pdf-to-image/zipball/3b140c4ef9a8cbb72ac51592a3f13d6a6b6d969e", - "reference": "3b140c4ef9a8cbb72ac51592a3f13d6a6b6d969e", - "shasum": "" - }, - "require": { - "ext-imagick": "*", - "php": "^7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\PdfToImage\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Convert a pdf to an image", - "homepage": "https://github.com/spatie/pdf-to-image", - "keywords": [ - "convert", - "image", - "pdf", - "pdf-to-image", - "spatie" - ], - "time": "2020-04-29T08:21:17+00:00" + "time": "2020-09-20T21:17:45+00:00" }, { "name": "spatie/temporary-directory", - "version": "1.2.2", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "fcb127e615700751dac2aefee0ea2808ff3f5bb1" + "reference": "8efe8e61e0ca943d84341f10e51ef3a9606af932" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/fcb127e615700751dac2aefee0ea2808ff3f5bb1", - "reference": "fcb127e615700751dac2aefee0ea2808ff3f5bb1", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/8efe8e61e0ca943d84341f10e51ef3a9606af932", + "reference": "8efe8e61e0ca943d84341f10e51ef3a9606af932", "shasum": "" }, "require": { @@ -3658,7 +3834,7 @@ "spatie", "temporary-directory" ], - "time": "2019-12-15T18:52:09+00:00" + "time": "2020-09-07T20:41:15+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -3724,41 +3900,44 @@ }, { "name": "symfony/console", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7" + "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", - "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", + "url": "https://api.github.com/repos/symfony/console/zipball/186f395b256065ba9b890c0a4e48a91d598fa2cf", + "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -3769,7 +3948,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -3796,29 +3975,29 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-03-30T11:41:10+00:00" + "time": "2020-09-02T07:07:40+00:00" }, { "name": "symfony/css-selector", - "version": "v3.1.10", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d" + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d", - "reference": "722a87478a72d95dc2a3bcf41dc9c2d13fd4cb2d", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/e544e24472d4c97b2d11ade7caacd446727c6bf9", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -3834,14 +4013,14 @@ "MIT" ], "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" @@ -3849,44 +4028,38 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:31:54+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.8", + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "346636d2cae417992ecfd761979b2ab98b339a45" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/346636d2cae417992ecfd761979b2ab98b339a45", - "reference": "346636d2cae417992ecfd761979b2ab98b339a45", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3895,46 +4068,47 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358" + "reference": "525636d4b84e06c6ca72d96b6856b5b169416e6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/7e9828fc98aa1cf27b422fe478a84f5b0abb7358", - "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/525636d4b84e06c6ca72d96b6856b5b169416e6a", + "reference": "525636d4b84e06c6ca72d96b6856b5b169416e6a", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", + "php": ">=7.2.5", + "psr/log": "^1.0", + "symfony/polyfill-php80": "^1.15", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { + "symfony/deprecation-contracts": "^2.1", "symfony/http-kernel": "^4.4|^5.0", "symfony/serializer": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -3961,41 +4135,43 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2020-03-30T14:07:33+00:00" + "time": "2020-08-17T10:01:29+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed" + "reference": "94871fc0a69c3c5da57764187724cdce0755899c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abc8e3618bfdb55e44c8c6a00abd333f831bbfed", - "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/94871fc0a69c3c5da57764187724cdce0755899c", + "reference": "94871fc0a69c3c5da57764187724cdce0755899c", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/stopwatch": "^4.4|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -4004,7 +4180,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4031,33 +4207,37 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-08-13T14:19:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4089,29 +4269,29 @@ "interoperability", "standards" ], - "time": "2019-09-17T09:54:03+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/finder", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5729f943f9854c5781984ed4907bbb817735776b" + "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", - "reference": "5729f943f9854c5781984ed4907bbb817735776b", + "url": "https://api.github.com/repos/symfony/finder/zipball/2b765f0cf6612b3636e738c0689b29aa63088d5d", + "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4138,35 +4318,41 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-08-17T10:01:29+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2" + "reference": "41a4647f12870e9d41d9a7d72ff0614a27208558" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2", - "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/41a4647f12870e9d41d9a7d72ff0614a27208558", + "reference": "41a4647f12870e9d41d9a7d72ff0614a27208558", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4193,59 +4379,68 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2020-04-18T20:40:08+00:00" + "time": "2020-08-17T07:48:54+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "1799a6c01f0db5851f399151abdb5d6393fec277" + "reference": "3e32676e6cb5d2081c91a56783471ff8a7f7110b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1799a6c01f0db5851f399151abdb5d6393fec277", - "reference": "1799a6c01f0db5851f399151abdb5d6393fec277", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3e32676e6cb5d2081c91a56783471ff8a7f7110b", + "reference": "3e32676e6cb5d2081c91a56783471ff8a7f7110b", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", "symfony/http-foundation": "^4.4|^5.0", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9" + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.34|<2.4,>=2" + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.34|^2.4|^3.0" + "twig/twig": "^2.4|^3.0" }, "suggest": { "symfony/browser-kit": "", @@ -4256,7 +4451,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4283,26 +4478,27 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2020-04-28T18:47:42+00:00" + "time": "2020-09-02T08:15:18+00:00" }, { "name": "symfony/mime", - "version": "v5.0.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "5d6c81c39225a750f3f43bee15f03093fb9aaa0b" + "reference": "89a2c9b4cb7b5aa516cf55f5194c384f444c81dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/5d6c81c39225a750f3f43bee15f03093fb9aaa0b", - "reference": "5d6c81c39225a750f3f43bee15f03093fb9aaa0b", + "url": "https://api.github.com/repos/symfony/mime/zipball/89a2c9b4cb7b5aa516cf55f5194c384f444c81dc", + "reference": "89a2c9b4cb7b5aa516cf55f5194c384f444c81dc", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/mailer": "<4.4" @@ -4314,7 +4510,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4345,20 +4541,20 @@ "mime", "mime-type" ], - "time": "2020-04-17T03:29:44+00:00" + "time": "2020-08-17T10:01:29+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.15.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14" + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14", - "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { @@ -4370,7 +4566,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4403,20 +4603,20 @@ "polyfill", "portable" ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.15.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", "shasum": "" }, "require": { @@ -4428,7 +4628,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4462,25 +4666,90 @@ "portable", "shim" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.15.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", - "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", + "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", "shasum": "" }, "require": { "php": ">=5.3.3", - "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php70": "^1.10", "symfony/polyfill-php72": "^1.10" }, "suggest": { @@ -4489,7 +4758,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4509,6 +4782,10 @@ "name": "Laurent Bassin", "email": "laurent@bassin.info" }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" @@ -4524,20 +4801,87 @@ "portable", "shim" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2020-08-04T06:02:08+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.15.0", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac", - "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { @@ -4549,7 +4893,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4583,20 +4931,83 @@ "portable", "shim" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.15.0", + "name": "symfony/polyfill-php70", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "37b0976c78b94856543260ce09b460a7bc852747" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747", - "reference": "37b0976c78b94856543260ce09b460a7bc852747", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "639447d008615574653fb3bc60d1986d7172eaae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", + "reference": "639447d008615574653fb3bc60d1986d7172eaae", "shasum": "" }, "require": { @@ -4605,7 +5016,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4638,20 +5053,20 @@ "portable", "shim" ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.15.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7" + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", - "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", "shasum": "" }, "require": { @@ -4660,7 +5075,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4696,29 +5115,96 @@ "portable", "shim" ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/process", - "version": "v4.4.8", + "name": "symfony/polyfill-php80", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b6a9a4013baa65d409153cbb5a895bf093dc7f4", - "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/process", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "1864216226af21eb76d9477f691e7cbf198e0402" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/1864216226af21eb76d9477f691e7cbf198e0402", + "reference": "1864216226af21eb76d9477f691e7cbf198e0402", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" } }, "autoload": { @@ -4745,103 +5231,40 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-04-15T15:56:18+00:00" - }, - { - "name": "symfony/psr-http-message-bridge", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "9d3e80d54d9ae747ad573cad796e8e247df7b796" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9d3e80d54d9ae747ad573cad796e8e247df7b796", - "reference": "9d3e80d54d9ae747ad573cad796e8e247df7b796", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0" - }, - "require-dev": { - "nyholm/psr7": "^1.1", - "symfony/phpunit-bridge": "^4.4 || ^5.0", - "zendframework/zend-diactoros": "^1.4.1 || ^2.0" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" - ], - "time": "2019-11-25T19:33:50+00:00" + "time": "2020-07-23T08:36:24+00:00" }, { "name": "symfony/routing", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c" + "reference": "47b0218344cb6af25c93ca8ee1137fafbee5005d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c", - "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c", + "url": "https://api.github.com/repos/symfony/routing/zipball/47b0218344cb6af25c93ca8ee1137fafbee5005d", + "reference": "47b0218344cb6af25c93ca8ee1137fafbee5005d", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { "doctrine/annotations": "~1.2", "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -4853,7 +5276,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4886,24 +5309,24 @@ "uri", "url" ], - "time": "2020-04-21T19:59:53+00:00" + "time": "2020-08-10T08:03:57+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.0.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -4912,7 +5335,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4944,46 +5371,119 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.8", + "name": "symfony/string", + "version": "v5.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191" + "url": "https://github.com/symfony/string.git", + "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/8272bbd2b7e220ef812eba2a2b30068a5c64b191", - "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191", + "url": "https://api.github.com/repos/symfony/string/zipball/0de4cc1e18bb596226c06a82e2e7e9bc6001a63a", + "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "time": "2020-08-17T07:48:54+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "917b02cdc5f33e0309b8e9d33ee1480b20687413" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/917b02cdc5f33e0309b8e9d33ee1480b20687413", + "reference": "917b02cdc5f33e0309b8e9d33ee1480b20687413", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^2" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0" + "symfony/translation-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -4993,7 +5493,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -5020,24 +5520,24 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2020-04-12T16:45:36+00:00" + "time": "2020-08-17T10:01:29+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.0.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/77ce1c3627c9f39643acd9af086631f842c50c4d", + "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "suggest": { "symfony/translation-implementation": "" @@ -5045,7 +5545,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5077,36 +5581,36 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf" + "reference": "b43a3905262bcf97b2510f0621f859ca4f5287be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c587e04ce5d1aa62d534a038f574d9a709e814cf", - "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b43a3905262bcf97b2510f0621f859ca4f5287be", + "reference": "b43a3905262bcf97b2510f0621f859ca4f5287be", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", + "symfony/console": "^4.4|^5.0", "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" + "twig/twig": "^2.4|^3.0" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -5119,7 +5623,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -5153,30 +5657,30 @@ "debug", "dump" ], - "time": "2020-04-12T16:14:02+00:00" + "time": "2020-08-17T07:42:30+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.2", + "version": "2.2.3", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15" + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/dda2ee426acd6d801d5b7fd1001cde9b5f790e15", - "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "^5.5 || ^7.0", + "php": "^5.5 || ^7.0 || ^8.0", "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5" }, "type": "library", "extra": { @@ -5202,40 +5706,107 @@ ], "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2019-10-24T08:53:34+00:00" + "time": "2020-07-13T06:12:54+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v3.6.3", + "name": "vinkla/hashids", + "version": "9.0.0", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1b3103013797f04521c6cae5560f604649484066" + "url": "https://github.com/vinkla/laravel-hashids.git", + "reference": "6ade658e445169dc994715aab47c8676721589ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1b3103013797f04521c6cae5560f604649484066", - "reference": "1b3103013797f04521c6cae5560f604649484066", + "url": "https://api.github.com/repos/vinkla/laravel-hashids/zipball/6ade658e445169dc994715aab47c8676721589ac", + "reference": "6ade658e445169dc994715aab47c8676721589ac", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", - "phpoption/phpoption": "^1.5", - "symfony/polyfill-ctype": "^1.9" + "graham-campbell/manager": "^4.4", + "hashids/hashids": "^4.0", + "illuminate/contracts": "^8.0", + "illuminate/support": "^8.0", + "php": "^7.3" }, "require-dev": { - "ext-filter": "*", - "ext-pcre": "*", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator.", - "ext-pcre": "Required to use most of the library." + "graham-campbell/analyzer": "^3.0", + "graham-campbell/testbench": "^5.4", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^9.0", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.6-dev" + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Vinkla\\Hashids\\HashidsServiceProvider" + ], + "aliases": { + "Hashids": "Vinkla\\Hashids\\Facades\\Hashids" + } + } + }, + "autoload": { + "psr-4": { + "Vinkla\\Hashids\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vincent Klaiber", + "email": "hello@doubledip.se" + } + ], + "description": "A Hashids bridge for Laravel", + "keywords": [ + "hashids", + "laravel" + ], + "time": "2020-09-07T11:42:52+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "fba64139db67123c7a57072e5f8d3db10d160b66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/fba64139db67123c7a57072e5f8d3db10d160b66", + "reference": "fba64139db67123c7a57072e5f8d3db10d160b66", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.1", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.7.4", + "symfony/polyfill-ctype": "^1.17", + "symfony/polyfill-mbstring": "^1.17", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.2 || ^9.0" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.2-dev" } }, "autoload": { @@ -5265,113 +5836,97 @@ "env", "environment" ], - "time": "2020-04-12T15:18:03+00:00" + "time": "2020-09-14T15:57:31+00:00" }, { - "name": "zendframework/zend-diactoros", - "version": "2.2.1", + "name": "voku/portable-ascii", + "version": "1.5.3", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "de5847b068362a88684a55b0dbb40d85986cfa52" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "25bcbf01678930251fd572891447d9e318a6e2b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/de5847b068362a88684a55b0dbb40d85986cfa52", - "reference": "de5847b068362a88684a55b0dbb40d85986cfa52", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/25bcbf01678930251fd572891447d9e318a6e2b8", + "reference": "25bcbf01678930251fd572891447d9e318a6e2b8", "shasum": "" }, "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "php": ">=7.0.0" }, "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" - } - }, "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], "psr-4": { - "Zend\\Diactoros\\": "src/" + "voku\\": "src/voku/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "PSR HTTP Message implementations", + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", "keywords": [ - "http", - "psr", - "psr-7" + "ascii", + "clean", + "php" ], - "abandoned": "laminas/laminas-diactoros", - "time": "2019-11-13T19:16:13+00:00" + "time": "2020-07-22T23:32:04+00:00" } ], "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v2.7.0", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc" + "reference": "affa55122f83575888d4ebf1728992686e8223de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/5f677edc14bdcfdcac36633e6eea71b2728a4dbc", - "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/affa55122f83575888d4ebf1728992686e8223de", + "reference": "affa55122f83575888d4ebf1728992686e8223de", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.0.6", - "composer/composer": "^1.6", + "composer/composer": "^1.6 || ^2.0@dev", "doctrine/dbal": "~2.3", - "illuminate/console": "^5.5|^6|^7", - "illuminate/filesystem": "^5.5|^6|^7", - "illuminate/support": "^5.5|^6|^7", - "php": ">=7.2" + "ext-json": "*", + "illuminate/console": "^6 || ^7 || ^8", + "illuminate/filesystem": "^6 || ^7 || ^8", + "illuminate/support": "^6 || ^7 || ^8", + "php": ">=7.2", + "phpdocumentor/type-resolver": "^1.1.0" }, "require-dev": { - "illuminate/config": "^5.5|^6|^7", - "illuminate/view": "^5.5|^6|^7", + "friendsofphp/php-cs-fixer": "^2", + "illuminate/config": "^6 || ^7 || ^8", + "illuminate/view": "^6 || ^7 || ^8", "mockery/mockery": "^1.3", - "orchestra/testbench": "^3|^4|^5", - "phpro/grumphp": "^0.17.1", - "squizlabs/php_codesniffer": "^3" + "orchestra/testbench": "^4 || ^5 || ^6", + "phpunit/phpunit": "^8.5 || ^9", + "spatie/phpunit-snapshot-assertions": "^1.4 || ^2.2 || ^3", + "vimeo/psalm": "^3.12" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" }, "laravel": { "providers": [ @@ -5406,7 +5961,7 @@ "phpstorm", "sublime" ], - "time": "2020-04-22T09:57:26+00:00" + "time": "2020-09-07T07:36:37+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -5459,28 +6014,28 @@ }, { "name": "beyondcode/laravel-dump-server", - "version": "1.3.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/beyondcode/laravel-dump-server.git", - "reference": "fcc88fa66895f8c1ff83f6145a5eff5fa2a0739a" + "reference": "1df6bb3bf13a2e818c1abbb7065ea362277be5c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/fcc88fa66895f8c1ff83f6145a5eff5fa2a0739a", - "reference": "fcc88fa66895f8c1ff83f6145a5eff5fa2a0739a", + "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/1df6bb3bf13a2e818c1abbb7065ea362277be5c0", + "reference": "1df6bb3bf13a2e818c1abbb7065ea362277be5c0", "shasum": "" }, "require": { - "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/http": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0", - "php": "^7.1", - "symfony/var-dumper": "^4.1.1" + "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0", + "illuminate/http": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0", + "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0", + "php": "^7.2.5", + "symfony/var-dumper": "^5.0" }, "require-dev": { "larapack/dd": "^1.0", - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^7.0|^9.3" }, "type": "library", "extra": { @@ -5516,20 +6071,20 @@ "beyondcode", "laravel-dump-server" ], - "time": "2019-08-11T13:17:40+00:00" + "time": "2020-09-14T07:14:12+00:00" }, { "name": "composer/ca-bundle", - "version": "1.2.7", + "version": "1.2.8", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" + "reference": "8a7ecad675253e4654ea05505233285377405215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", - "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", + "reference": "8a7ecad675253e4654ea05505233285377405215", "shasum": "" }, "require": { @@ -5572,20 +6127,20 @@ "ssl", "tls" ], - "time": "2020-04-08T08:27:21+00:00" + "time": "2020-08-23T12:54:47+00:00" }, { "name": "composer/composer", - "version": "1.10.5", + "version": "1.10.13", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "7a4d5b6aa30d2118af27c04f5e897b57156ccfa9" + "reference": "47c841ba3b2d3fc0b4b13282cf029ea18b66d78b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/7a4d5b6aa30d2118af27c04f5e897b57156ccfa9", - "reference": "7a4d5b6aa30d2118af27c04f5e897b57156ccfa9", + "url": "https://api.github.com/repos/composer/composer/zipball/47c841ba3b2d3fc0b4b13282cf029ea18b66d78b", + "reference": "47c841ba3b2d3fc0b4b13282cf029ea18b66d78b", "shasum": "" }, "require": { @@ -5593,7 +6148,7 @@ "composer/semver": "^1.0", "composer/spdx-licenses": "^1.2", "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "justinrainbow/json-schema": "^5.2.10", "php": "^5.3.2 || ^7.0", "psr/log": "^1.0", "seld/jsonlint": "^1.4", @@ -5608,7 +6163,7 @@ }, "require-dev": { "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^3.4" + "symfony/phpunit-bridge": "^4.2" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -5652,20 +6207,20 @@ "dependency", "package" ], - "time": "2020-04-10T09:44:22+00:00" + "time": "2020-09-09T09:46:34+00:00" }, { "name": "composer/semver", - "version": "1.5.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + "reference": "114f819054a2ea7db03287f5efb757e2af6e4079" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "url": "https://api.github.com/repos/composer/semver/zipball/114f819054a2ea7db03287f5efb757e2af6e4079", + "reference": "114f819054a2ea7db03287f5efb757e2af6e4079", "shasum": "" }, "require": { @@ -5713,20 +6268,20 @@ "validation", "versioning" ], - "time": "2020-01-13T12:06:48+00:00" + "time": "2020-09-09T09:34:06+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.3", + "version": "1.5.4", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" + "reference": "6946f785871e2314c60b4524851f3702ea4f2223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223", + "reference": "6946f785871e2314c60b4524851f3702ea4f2223", "shasum": "" }, "require": { @@ -5773,20 +6328,20 @@ "spdx", "validator" ], - "time": "2020-02-14T07:44:31+00:00" + "time": "2020-07-15T15:35:07+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.4.1", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" + "reference": "ebd27a9866ae8254e873866f795491f02418c5a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ebd27a9866ae8254e873866f795491f02418c5a5", + "reference": "ebd27a9866ae8254e873866f795491f02418c5a5", "shasum": "" }, "require": { @@ -5817,24 +6372,24 @@ "Xdebug", "performance" ], - "time": "2020-03-01T12:26:26+00:00" + "time": "2020-08-19T10:27:58+00:00" }, { "name": "doctrine/instantiator", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -5873,31 +6428,32 @@ "constructor", "instantiate" ], - "time": "2019-10-21T16:45:58+00:00" + "time": "2020-05-29T17:27:14+00:00" }, { "name": "facade/flare-client-php", - "version": "1.3.2", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/facade/flare-client-php.git", - "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004" + "reference": "451fadf38e9f635e7f8e1f5b3cf5c9eb82f11799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/db1e03426e7f9472c9ecd1092aff00f56aa6c004", - "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/451fadf38e9f635e7f8e1f5b3cf5c9eb82f11799", + "reference": "451fadf38e9f635e7f8e1f5b3cf5c9eb82f11799", "shasum": "" }, "require": { "facade/ignition-contracts": "~1.0", - "illuminate/pipeline": "^5.5|^6.0|^7.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", "php": "^7.1", "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/mime": "^3.4|^4.0|^5.1", "symfony/var-dumper": "^3.4|^4.0|^5.0" }, "require-dev": { - "larapack/dd": "^1.1", + "friendsofphp/php-cs-fixer": "^2.14", "phpunit/phpunit": "^7.5.16", "spatie/phpunit-snapshot-assertions": "^2.0" }, @@ -5927,47 +6483,48 @@ "flare", "reporting" ], - "time": "2020-03-02T15:52:04+00:00" + "time": "2020-09-18T06:35:11+00:00" }, { "name": "facade/ignition", - "version": "1.16.1", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "af05ac5ee8587395d7474ec0681c08776a2cb09d" + "reference": "b364db8860a63c1fb58b72b9718863c21df08762" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/af05ac5ee8587395d7474ec0681c08776a2cb09d", - "reference": "af05ac5ee8587395d7474ec0681c08776a2cb09d", + "url": "https://api.github.com/repos/facade/ignition/zipball/b364db8860a63c1fb58b72b9718863c21df08762", + "reference": "b364db8860a63c1fb58b72b9718863c21df08762", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "facade/flare-client-php": "^1.3", + "facade/flare-client-php": "^1.0", "facade/ignition-contracts": "^1.0", "filp/whoops": "^2.4", - "illuminate/support": "~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0", - "monolog/monolog": "^1.12 || ^2.0", - "php": "^7.1", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5", "scrivo/highlight.php": "^9.15", - "symfony/console": "^3.4 || ^4.0", - "symfony/var-dumper": "^3.4 || ^4.0" + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.14", - "mockery/mockery": "^1.2", - "orchestra/testbench": "^3.5 || ^3.6 || ^3.7 || ^3.8 || ^4.0" + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" }, "suggest": { - "laravel/telescope": "^2.0" + "laravel/telescope": "^3.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -5998,25 +6555,30 @@ "laravel", "page" ], - "time": "2020-03-05T12:39:07+00:00" + "time": "2020-09-06T19:26:27+00:00" }, { "name": "facade/ignition-contracts", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/facade/ignition-contracts.git", - "reference": "f445db0fb86f48e205787b2592840dd9c80ded28" + "reference": "aeab1ce8b68b188a43e81758e750151ad7da796b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/f445db0fb86f48e205787b2592840dd9c80ded28", - "reference": "f445db0fb86f48e205787b2592840dd9c80ded28", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/aeab1ce8b68b188a43e81758e750151ad7da796b", + "reference": "aeab1ce8b68b188a43e81758e750151ad7da796b", "shasum": "" }, "require": { "php": "^7.1" }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpunit/phpunit": "^7.5|^8.0", + "vimeo/psalm": "^3.12" + }, "type": "library", "autoload": { "psr-4": { @@ -6042,20 +6604,20 @@ "flare", "ignition" ], - "time": "2019-08-30T14:06:08+00:00" + "time": "2020-07-14T10:10:28+00:00" }, { "name": "filp/whoops", - "version": "2.7.1", + "version": "2.7.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130" + "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", - "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", + "url": "https://api.github.com/repos/filp/whoops/zipball/5d5fe9bb3d656b514d455645b3addc5f7ba7714d", + "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d", "shasum": "" }, "require": { @@ -6103,7 +6665,7 @@ "throwable", "whoops" ], - "time": "2020-01-15T10:00:00+00:00" + "time": "2020-06-14T09:00:00+00:00" }, { "name": "fzaninotto/faker", @@ -6157,20 +6719,20 @@ }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "shasum": "" }, "require": { - "php": "^5.3|^7.0" + "php": "^5.3|^7.0|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -6178,14 +6740,13 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "^1.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -6195,26 +6756,64 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause" ], "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ "test" ], - "time": "2016-01-20T08:20:44+00:00" + "time": "2020-07-09T08:09:16+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.9", + "name": "jasonmccreary/laravel-test-assertions", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + "url": "https://github.com/jasonmccreary/laravel-test-assertions.git", + "reference": "3ead0117ce53d2b64ce6a6caa5db26f2188712ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "url": "https://api.github.com/repos/jasonmccreary/laravel-test-assertions/zipball/3ead0117ce53d2b64ce6a6caa5db26f2188712ae", + "reference": "3ead0117ce53d2b64ce6a6caa5db26f2188712ae", + "shasum": "" + }, + "require": { + "mockery/mockery": "^1.0", + "php": ">=7.2", + "phpunit/phpunit": "^7.5|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "JMac\\Testing\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jason McCreary", + "email": "jason@pureconcepts.net" + } + ], + "description": "A set of helpful assertions when testing Laravel applications.", + "time": "2020-04-03T15:14:24+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.10", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", "shasum": "" }, "require": { @@ -6267,81 +6866,37 @@ "json", "schema" ], - "time": "2019-09-25T14:49:45+00:00" - }, - { - "name": "laravel/browser-kit-testing", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/browser-kit-testing.git", - "reference": "0adfb725147815bff5516d157577f375a6e66ebd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/browser-kit-testing/zipball/0adfb725147815bff5516d157577f375a6e66ebd", - "reference": "0adfb725147815bff5516d157577f375a6e66ebd", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/css-selector": "~3.1", - "symfony/dom-crawler": "~3.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Laravel\\BrowserKitTesting\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Provides backwards compatibility for BrowserKit testing in Laravel 5.4.", - "keywords": [ - "laravel", - "testing" - ], - "time": "2017-02-08T22:32:37+00:00" + "time": "2020-05-27T16:41:55+00:00" }, { "name": "mockery/mockery", - "version": "1.3.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" + "reference": "20cab678faed06fac225193be281ea0fddb43b93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", - "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", + "url": "https://api.github.com/repos/mockery/mockery/zipball/20cab678faed06fac225193be281ea0fddb43b93", + "reference": "20cab678faed06fac225193be281ea0fddb43b93", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~2.0", + "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" + "phpunit/phpunit": "^8.5 || ^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -6379,24 +6934,24 @@ "test double", "testing" ], - "time": "2019-12-26T09:49:15+00:00" + "time": "2020-08-11T18:10:13+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.9.5", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "replace": { "myclabs/deep-copy": "self.version" @@ -6427,33 +6982,39 @@ "object", "object graph" ], - "time": "2020-01-17T21:11:47+00:00" + "time": "2020-06-29T13:22:24+00:00" }, { "name": "nunomaduro/collision", - "version": "v3.0.1", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68" + "reference": "4a343299054e9368d0db4a982a780cc4ffa12707" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/af42d339fe2742295a54f6fdd42aaa6f8c4aca68", - "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4a343299054e9368d0db4a982a780cc4ffa12707", + "reference": "4a343299054e9368d0db4a982a780cc4ffa12707", "shasum": "" }, "require": { - "filp/whoops": "^2.1.4", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "php": "^7.1", - "symfony/console": "~2.8|~3.3|~4.0" + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.7.2", + "php": "^7.3", + "symfony/console": "^5.0" }, "require-dev": { - "laravel/framework": "5.8.*", - "nunomaduro/larastan": "^0.3.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "~8.0" + "fideloper/proxy": "^4.4.0", + "friendsofphp/php-cs-fixer": "^2.16.4", + "fruitcake/laravel-cors": "^2.0.1", + "laravel/framework": "^8.0", + "laravel/tinker": "^2.4.1", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.36", + "phpunit/phpunit": "^9.3.3" }, "type": "library", "extra": { @@ -6491,32 +7052,388 @@ "php", "symfony" ], - "time": "2019-03-07T21:35:13+00:00" + "time": "2020-08-27T18:58:22+00:00" }, { - "name": "phar-io/manifest", - "version": "1.0.3", + "name": "pestphp/pest", + "version": "v0.3.6", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "url": "https://github.com/pestphp/pest.git", + "reference": "0fadf9a02c5fcd212a7123f704c7825d2d96a41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/pestphp/pest/zipball/0fadf9a02c5fcd212a7123f704c7825d2d96a41c", + "reference": "0fadf9a02c5fcd212a7123f704c7825d2d96a41c", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^5.0", + "pestphp/pest-plugin": "^0.3", + "pestphp/pest-plugin-coverage": "^0.3", + "pestphp/pest-plugin-init": "^0.3", + "php": "^7.3 || ^8.0", + "phpunit/phpunit": "9.3.7 || 9.3.8 || 9.3.9 || 9.3.10" + }, + "require-dev": { + "illuminate/console": "^7.16.1", + "illuminate/support": "^7.16.1", + "mockery/mockery": "^1.4.1", + "pestphp/pest-dev-tools": "dev-master" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + }, + "pest": { + "plugins": [ + "Pest\\Plugins\\Version" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Pest\\": "src/" + }, + "files": [ + "src/globals.php", + "src/Pest.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "time": "2020-09-21T19:31:32+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "635f8c33a3eed910ac3cd5cb02a7163c5c70c033" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/635f8c33a3eed910ac3cd5cb02a7163c5c70c033", + "reference": "635f8c33a3eed910ac3cd5cb02a7163c5c70c033", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1 || ^2.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "pestphp/pest": "<0.3" + }, + "require-dev": { + "composer/composer": "^1.10", + "pestphp/pest": "^0.3", + "pestphp/pest-dev-tools": "dev-master" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + }, + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "time": "2020-08-25T20:53:40+00:00" + }, + { + "name": "pestphp/pest-plugin-coverage", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-coverage.git", + "reference": "f209bb62728841f21f267759a374d66172a162ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-coverage/zipball/f209bb62728841f21f267759a374d66172a162ea", + "reference": "f209bb62728841f21f267759a374d66172a162ea", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^0.3", + "php": "^7.3 || ^8.0", + "sebastian/environment": "^5.1.2" + }, + "conflict": { + "pestphp/pest": "<0.3" + }, + "require-dev": { + "pestphp/pest": "^0.3", + "pestphp/pest-dev-tools": "dev-master" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3.x-dev" + }, + "pest": { + "plugins": [ + "Pest\\PluginCoverage\\Plugin" + ] + } + }, + "autoload": { + "psr-4": { + "Pest\\PluginCoverage\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Coverage Plugin", + "keywords": [ + "coverage", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "time": "2020-08-25T20:42:46+00:00" + }, + { + "name": "pestphp/pest-plugin-faker", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-faker.git", + "reference": "3a57e4803c4b6c0d0dde2ed8f0b1ca1a575001e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-faker/zipball/3a57e4803c4b6c0d0dde2ed8f0b1ca1a575001e3", + "reference": "3a57e4803c4b6c0d0dde2ed8f0b1ca1a575001e3", + "shasum": "" + }, + "require": { + "fzaninotto/faker": "^1.9.1", + "pestphp/pest": "^0.3", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "dev-master" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Pest\\Faker\\": "src/" + }, + "files": [ + "src/Faker.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Faker Plugin", + "keywords": [ + "faker", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "time": "2020-08-25T20:57:25+00:00" + }, + { + "name": "pestphp/pest-plugin-init", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-init.git", + "reference": "06482f1c7ccf92c9ed855efcb7e594399628710a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-init/zipball/06482f1c7ccf92c9ed855efcb7e594399628710a", + "reference": "06482f1c7ccf92c9ed855efcb7e594399628710a", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^0.3", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "pestphp/pest": "<0.3" + }, + "require-dev": { + "pestphp/pest": "^0.3", + "pestphp/pest-dev-tools": "dev-master" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + }, + "pest": { + "plugins": [ + "Pest\\Init\\Plugin" + ] + } + }, + "autoload": { + "psr-4": { + "Pest\\Init\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Init plugin", + "keywords": [ + "framework", + "init", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "time": "2020-08-27T20:08:38+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "0ec53f5cc2d661088683318629ca16dcd72c41d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/0ec53f5cc2d661088683318629ca16dcd72c41d1", + "reference": "0ec53f5cc2d661088683318629ca16dcd72c41d1", + "shasum": "" + }, + "require": { + "laravel/framework": "^7.0 || ^8.0", + "pestphp/pest": "^0.3", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "orchestra/testbench": "^5.2 || ^6.0", + "pestphp/pest-dev-tools": "dev-master" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Pest\\Laravel\\": "src/" + }, + "files": [ + "src/Autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Laravel Plugin", + "keywords": [ + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "time": "2020-08-25T21:08:14+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -6546,24 +7463,24 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2018-07-08T19:23:20+00:00" + "time": "2020-06-27T14:33:11+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0", + "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -6593,29 +7510,29 @@ } ], "description": "Library for handling version information and constraints", - "time": "2018-07-08T19:19:57+00:00" + "time": "2020-06-27T14:39:04+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -6642,32 +7559,31 @@ "reflection", "static analysis" ], - "time": "2020-04-27T09:25:28+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.1.0", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { - "ext-filter": "^7.1", - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0", - "phpdocumentor/type-resolver": "^1.0", - "webmozart/assert": "^1" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "^1", - "mockery/mockery": "^1" + "mockery/mockery": "~1.3.2" }, "type": "library", "extra": { @@ -6695,34 +7611,33 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-02-22T12:28:44+00:00" + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.1.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { - "php": "^7.2", + "php": "^7.2 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.2", - "mockery/mockery": "~1" + "ext-tokenizer": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -6741,37 +7656,37 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-02-18T18:59:58+00:00" + "time": "2020-09-17T18:55:26+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.10.3", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" + "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", + "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2", + "phpdocumentor/reflection-docblock": "^5.0", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10.x-dev" + "dev-master": "1.11.x-dev" } }, "autoload": { @@ -6804,44 +7719,48 @@ "spy", "stub" ], - "time": "2020-03-05T15:02:03+00:00" + "time": "2020-07-08T12:44:21+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.10", + "version": "9.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" + "reference": "c9394cb9d07ecfa9351b96f2e296bad473195f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c9394cb9d07ecfa9351b96f2e296bad473195f4d", + "reference": "c9394cb9d07ecfa9351b96f2e296bad473195f4d", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.8", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.1-dev" } }, "autoload": { @@ -6867,32 +7786,32 @@ "testing", "xunit" ], - "time": "2019-11-20T13:55:58+00:00" + "time": "2020-09-19T05:29:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.2", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" + "reference": "25fefc5b19835ca653877fe081644a3f8c1d915e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/25fefc5b19835ca653877fe081644a3f8c1d915e", + "reference": "25fefc5b19835ca653877fe081644a3f8c1d915e", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -6917,26 +7836,87 @@ "filesystem", "iterator" ], - "time": "2018-09-13T20:33:42+00:00" + "time": "2020-07-11T05:18:21+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "7a85b66acc48cacffdf87dadd3694e7123674298" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7a85b66acc48cacffdf87dadd3694e7123674298", + "reference": "7a85b66acc48cacffdf87dadd3694e7123674298", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.0" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-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": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "time": "2020-08-06T07:04:15+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "6ff9c8ea4d3212b88fcf74e25e516e2c51c99324" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/6ff9c8ea4d3212b88fcf74e25e516e2c51c99324", + "reference": "6ff9c8ea4d3212b88fcf74e25e516e2c51c99324", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -6958,32 +7938,32 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2020-06-26T11:55:37+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.2", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + "reference": "cc49734779cbb302bf51a44297dab8c4bbf941e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/cc49734779cbb302bf51a44297dab8c4bbf941e7", + "reference": "cc49734779cbb302bf51a44297dab8c4bbf941e7", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7007,105 +7987,59 @@ "keywords": [ "timer" ], - "time": "2019-06-07T04:22:29+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2019-09-17T06:23:10+00:00" + "time": "2020-06-26T11:58:13+00:00" }, { "name": "phpunit/phpunit", - "version": "8.5.4", + "version": "9.3.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8474e22d7d642f665084ba5ec780626cbd1efd23" + "reference": "919333f2d046a89f9238f15d09f17a8f0baa5cc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8474e22d7d642f665084ba5ec780626cbd1efd23", - "reference": "8474e22d7d642f665084ba5ec780626cbd1efd23", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/919333f2d046a89f9238f15d09f17a8f0baa5cc2", + "reference": "919333f2d046a89f9238f15d09f17a8f0baa5cc2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.2", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.7", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.1", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.11.1", + "phpunit/php-code-coverage": "^9.1.5", + "phpunit/php-file-iterator": "^3.0.4", + "phpunit/php-invoker": "^3.1", + "phpunit/php-text-template": "^2.0.2", + "phpunit/php-timer": "^5.0.1", + "sebastian/cli-parser": "^1.0", + "sebastian/code-unit": "^1.0.5", + "sebastian/comparator": "^4.0.3", + "sebastian/diff": "^4.0.2", + "sebastian/environment": "^5.1.2", + "sebastian/exporter": "^4.0.2", + "sebastian/global-state": "^5.0", + "sebastian/object-enumerator": "^4.0.2", + "sebastian/resource-operations": "^3.0.2", + "sebastian/type": "^2.2.1", + "sebastian/version": "^3.0.1" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -7113,12 +8047,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.3-dev" } }, "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7139,20 +8076,20 @@ "testing", "xunit" ], - "time": "2020-04-23T04:39:42+00:00" + "time": "2020-09-12T09:34:39+00:00" }, { "name": "scrivo/highlight.php", - "version": "v9.18.1.1", + "version": "v9.18.1.2", "source": { "type": "git", "url": "https://github.com/scrivo/highlight.php.git", - "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558" + "reference": "efb6e445494a9458aa59b0af5edfa4bdcc6809d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/52fc21c99fd888e33aed4879e55a3646f8d40558", - "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558", + "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/efb6e445494a9458aa59b0af5edfa4bdcc6809d9", + "reference": "efb6e445494a9458aa59b0af5edfa4bdcc6809d9", "shasum": "" }, "require": { @@ -7208,32 +8145,124 @@ "highlight.php", "syntax" ], - "time": "2020-03-02T05:59:21+00:00" + "time": "2020-08-27T03:24:44+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "name": "sebastian/cli-parser", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "2a4a38c56e62f7295bedb8b1b7439ad523d4ea82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2a4a38c56e62f7295bedb8b1b7439ad523d4ea82", + "reference": "2a4a38c56e62f7295bedb8b1b7439ad523d4ea82", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "time": "2020-08-12T10:49:21+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "c1e2df332c905079980b119c4db103117e5e5c90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/c1e2df332c905079980b119c4db103117e5e5c90", + "reference": "c1e2df332c905079980b119c4db103117e5e5c90", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "time": "2020-06-26T12:50:45+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ee51f9bb0c6d8a43337055db3120829fa14da819" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ee51f9bb0c6d8a43337055db3120829fa14da819", + "reference": "ee51f9bb0c6d8a43337055db3120829fa14da819", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -7253,34 +8282,34 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "time": "2020-06-26T12:04:00+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + "reference": "dcc580eadfaa4e7f9d2cf9ae1922134ea962e14f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dcc580eadfaa4e7f9d2cf9ae1922134ea962e14f", + "reference": "dcc580eadfaa4e7f9d2cf9ae1922134ea962e14f", "shasum": "" }, "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": "^7.3 || ^8.0", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -7293,6 +8322,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -7304,10 +8337,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -7317,33 +8346,33 @@ "compare", "equality" ], - "time": "2018-07-12T15:12:46+00:00" + "time": "2020-06-26T12:05:46+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.2", + "name": "sebastian/complexity", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "33fcd6a26656c6546f70871244ecba4b4dced097" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/33fcd6a26656c6546f70871244ecba4b4dced097", + "reference": "33fcd6a26656c6546f70871244ecba4b4dced097", "shasum": "" }, "require": { - "php": "^7.1" + "nikic/php-parser": "^4.7", + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -7357,12 +8386,59 @@ ], "authors": [ { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "time": "2020-07-25T14:01:34+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "1e90b4cf905a7d06c420b1d2e9d11a4dc8a13113" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e90b4cf905a7d06c420b1d2e9d11a4dc8a13113", + "reference": "1e90b4cf905a7d06c420b1d2e9d11a4dc8a13113", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", @@ -7373,27 +8449,27 @@ "unidiff", "unified diff" ], - "time": "2019-02-04T06:01:07+00:00" + "time": "2020-06-30T04:46:02+00:00" }, { "name": "sebastian/environment", - "version": "4.2.3", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + "reference": "0a757cab9d5b7ef49a619f1143e6c9c1bc0fe9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0a757cab9d5b7ef49a619f1143e6c9c1bc0fe9d2", + "reference": "0a757cab9d5b7ef49a619f1143e6c9c1bc0fe9d2", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.0" }, "suggest": { "ext-posix": "*" @@ -7401,7 +8477,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7426,34 +8502,34 @@ "environment", "hhvm" ], - "time": "2019-11-20T08:46:58+00:00" + "time": "2020-06-26T12:07:24+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.2", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + "reference": "571d721db4aec847a0e59690b954af33ebf9f023" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/571d721db4aec847a0e59690b954af33ebf9f023", + "reference": "571d721db4aec847a0e59690b954af33ebf9f023", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" + "php": "^7.3 || ^8.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -7493,30 +8569,30 @@ "export", "exporter" ], - "time": "2019-09-14T09:02:43+00:00" + "time": "2020-06-26T12:08:55+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" + "reference": "22ae663c951bdc39da96603edc3239ed3a299097" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/22ae663c951bdc39da96603edc3239ed3a299097", + "reference": "22ae663c951bdc39da96603edc3239ed3a299097", "shasum": "" }, "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": "^7.3 || ^8.0", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -7524,7 +8600,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7547,34 +8623,81 @@ "keywords": [ "global state" ], - "time": "2019-02-01T05:30:01+00:00" + "time": "2020-08-07T04:09:03+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.3", + "name": "sebastian/lines-of-code", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e02bf626f404b5daec382a7b8a6a4456e49017e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e02bf626f404b5daec382a7b8a6a4456e49017e5", + "reference": "e02bf626f404b5daec382a7b8a6a4456e49017e5", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "time": "2020-07-22T18:33:42+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "074fed2d0a6d08e1677dd8ce9d32aecb384917b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/074fed2d0a6d08e1677dd8ce9d32aecb384917b8", + "reference": "074fed2d0a6d08e1677dd8ce9d32aecb384917b8", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -7594,122 +8717,27 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "time": "2020-06-26T12:11:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "127a46f6b057441b201253526f81d5406d6c7840" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/127a46f6b057441b201253526f81d5406d6c7840", + "reference": "127a46f6b057441b201253526f81d5406d6c7840", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "shasum": "" - }, - "require": { - "php": "^7.1" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { @@ -7732,34 +8760,132 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2018-10-04T04:07:39+00:00" + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2020-06-26T12:12:55+00:00" }, { - "name": "sebastian/type", - "version": "1.1.3", + "name": "sebastian/recursion-context", + "version": "4.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "062231bf61d2b9448c4fa5a7643b5e1829c11d63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/062231bf61d2b9448c4fa5a7643b5e1829c11d63", + "reference": "062231bf61d2b9448c4fa5a7643b5e1829c11d63", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2020-06-26T12:14:17+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0653718a5a629b065e91f774595267f8dc32e213" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0653718a5a629b065e91f774595267f8dc32e213", + "reference": "0653718a5a629b065e91f774595267f8dc32e213", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2020-06-26T12:16:22+00:00" + }, + { + "name": "sebastian/type", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "86991e2b33446cd96e648c18bcdb1e95afb2c05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/86991e2b33446cd96e648c18bcdb1e95afb2c05a", + "reference": "86991e2b33446cd96e648c18bcdb1e95afb2c05a", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -7780,29 +8906,29 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", - "time": "2019-07-02T08:10:15+00:00" + "time": "2020-07-05T08:31:53+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "626586115d0ed31cb71483be55beb759b5af5a3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/626586115d0ed31cb71483be55beb759b5af5a3c", + "reference": "626586115d0ed31cb71483be55beb759b5af5a3c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "^7.3 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -7823,20 +8949,20 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "time": "2020-06-26T12:18:43+00:00" }, { "name": "seld/jsonlint", - "version": "1.8.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" + "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/590cfec960b77fd55e39b7d9246659e95dd6d337", + "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337", "shasum": "" }, "require": { @@ -7872,20 +8998,20 @@ "parser", "validator" ], - "time": "2020-04-30T19:05:18+00:00" + "time": "2020-08-25T06:56:57+00:00" }, { "name": "seld/phar-utils", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", "shasum": "" }, "require": { @@ -7916,44 +9042,48 @@ "keywords": [ "phar" ], - "time": "2020-02-14T15:25:33+00:00" + "time": "2020-07-07T18:42:57+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v3.1.10", + "name": "spatie/laravel-permission", + "version": "3.17.0", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "7eede2a901a19928494194f7d1815a77b9a473a0" + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "35d40a45e49f5713f477823b571e05ef6a3a0394" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/7eede2a901a19928494194f7d1815a77b9a473a0", - "reference": "7eede2a901a19928494194f7d1815a77b9a473a0", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/35d40a45e49f5713f477823b571e05ef6a3a0394", + "reference": "35d40a45e49f5713f477823b571e05ef6a3a0394", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" + "illuminate/auth": "^5.8|^6.0|^7.0|^8.0", + "illuminate/container": "^5.8|^6.0|^7.0|^8.0", + "illuminate/contracts": "^5.8|^6.0|^7.0|^8.0", + "illuminate/database": "^5.8|^6.0|^7.0|^8.0", + "php": "^7.2.5" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0" - }, - "suggest": { - "symfony/css-selector": "" + "orchestra/testbench": "^3.8|^4.0|^5.0|^6.0", + "phpunit/phpunit": "^8.0|^9.0", + "predis/predis": "^1.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.1-dev" + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] } }, "autoload": { "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" + "Spatie\\Permission\\": "src" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/helpers.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7962,40 +9092,48 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" } ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "time": "2017-01-21T17:13:55+00:00" + "description": "Permission handling for Laravel 5.8 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "time": "2020-09-16T16:47:18+00:00" }, { "name": "symfony/filesystem", - "version": "v5.0.8", + "version": "v5.1.5", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91" + "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7cd0dafc4353a0f62e307df90b48466379c8cc91", - "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/f7b9ed6142a34252d219801d9767dedbd711da1a", + "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -8022,27 +9160,27 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2020-04-12T14:40:17+00:00" + "time": "2020-08-21T17:19:47+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "75a63c33a8577608444246075ea0af0d052e452a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -8062,27 +9200,28 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13T22:48:21+00:00" + "time": "2020-07-12T23:59:07+00:00" }, { "name": "webmozart/assert", - "version": "1.8.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", - "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^5.3.3 || ^7.0 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { + "phpstan/phpstan": "<0.12.20", "vimeo/psalm": "<3.9.1" }, "require-dev": { @@ -8110,7 +9249,7 @@ "check", "validate" ], - "time": "2020-04-18T12:12:48+00:00" + "time": "2020-07-08T17:02:28+00:00" } ], "aliases": [], @@ -8119,7 +9258,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.2" + "php": "^7.3" }, "platform-dev": [] } diff --git a/config/app.php b/config/app.php index 245b5c38..696fac46 100644 --- a/config/app.php +++ b/config/app.php @@ -166,9 +166,8 @@ return [ Crater\Providers\BroadcastServiceProvider::class, Crater\Providers\EventServiceProvider::class, Crater\Providers\RouteServiceProvider::class, - Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, - Laravel\Passport\PassportServiceProvider::class, - Spatie\Permission\PermissionServiceProvider::class + Crater\Providers\DropboxServiceProvider::class, + Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class ], /* @@ -207,6 +206,7 @@ return [ 'Queue' => Illuminate\Support\Facades\Queue::class, 'Redirect' => Illuminate\Support\Facades\Redirect::class, 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Http' => Illuminate\Support\Facades\Http::class, 'Request' => Illuminate\Support\Facades\Request::class, 'Response' => Illuminate\Support\Facades\Response::class, 'Route' => Illuminate\Support\Facades\Route::class, diff --git a/config/auth.php b/config/auth.php index 82c0763e..c562337e 100644 --- a/config/auth.php +++ b/config/auth.php @@ -14,7 +14,7 @@ return [ */ 'defaults' => [ - 'guard' => 'api', + 'guard' => 'web', 'passwords' => 'users', ], @@ -42,8 +42,9 @@ return [ ], 'api' => [ - 'driver' => 'passport', + 'driver' => 'token', 'provider' => 'users', + 'hash' => false, ], ], @@ -67,7 +68,7 @@ return [ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => Crater\User::class, + 'model' => \Crater\Models\User::class, ], // 'users' => [ @@ -96,24 +97,21 @@ return [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, + 'throttle' => 60, ], ], /* |-------------------------------------------------------------------------- - | OAuth Proxy Authentication + | Password Confirmation Timeout |-------------------------------------------------------------------------- | - | If you are planning to use your application to self-authenticate as a - | proxy, you can define the client and grant type to use here. This is - | sometimes the case when a trusted Single Page Application doesn't - | use a backend to send the authentication request, but instead - | relies on the API to handle proxying the request to itself. + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. | - */ - 'proxy' => [ - 'client_id' => env('PROXY_OAUTH_CLIENT_ID'), - 'client_secret' => env('PROXY_OAUTH_CLIENT_SECRET'), - 'grant_type' => env('PROXY_OAUTH_GRANT_TYPE'), - ], + */ + + 'password_timeout' => 10800, + ]; diff --git a/config/backup.php b/config/backup.php new file mode 100644 index 00000000..7caa47a3 --- /dev/null +++ b/config/backup.php @@ -0,0 +1,241 @@ + [ + + /* + * The name of this application. You can use this name to monitor + * the backups. + */ + 'name' => env('APP_NAME', 'laravel-backup'), + + 'source' => [ + + 'files' => [ + + /* + * The list of directories and files that will be included in the backup. + */ + 'include' => [ + base_path(), + ], + + /* + * These directories and files will be excluded from the backup. + * + * Directories used by the backup process will automatically be excluded. + */ + 'exclude' => [ + base_path('vendor'), + base_path('node_modules'), + base_path('.git') + ], + + /* + * Determines if symlinks should be followed. + */ + 'follow_links' => false, + + /* + * Determines if it should avoid unreadable folders. + */ + 'ignore_unreadable_directories' => false, + ], + + /* + * The names of the connections to the databases that should be backed up + * MySQL, PostgreSQL, SQLite and Mongo databases are supported. + * + * The content of the database dump may be customized for each connection + * by adding a 'dump' key to the connection settings in config/database.php. + * E.g. + * 'mysql' => [ + * ... + * 'dump' => [ + * 'excludeTables' => [ + * 'table_to_exclude_from_backup', + * 'another_table_to_exclude' + * ] + * ], + * ], + * + * If you are using only InnoDB tables on a MySQL server, you can + * also supply the useSingleTransaction option to avoid table locking. + * + * E.g. + * 'mysql' => [ + * ... + * 'dump' => [ + * 'useSingleTransaction' => true, + * ], + * ], + * + * For a complete list of available customization options, see https://github.com/spatie/db-dumper + */ + 'databases' => [ + 'mysql', + ], + ], + + /* + * The database dump can be compressed to decrease diskspace usage. + * + * Out of the box Laravel-backup supplies + * Spatie\DbDumper\Compressors\GzipCompressor::class. + * + * You can also create custom compressor. More info on that here: + * https://github.com/spatie/db-dumper#using-compression + * + * If you do not want any compressor at all, set it to null. + */ + 'database_dump_compressor' => null, + + 'destination' => [ + + /* + * The filename prefix used for the backup zip file. + */ + 'filename_prefix' => '', + + /* + * The disk names on which the backups will be stored. + */ + 'disks' => [ + 'local' + ], + ], + + /* + * The directory where the temporary files will be stored. + */ + 'temporary_directory' => storage_path('app/backup-temp'), + ], + + /* + * You can get notified when specific events occur. Out of the box you can use 'mail' and 'slack'. + * For Slack you need to install guzzlehttp/guzzle and laravel/slack-notification-channel. + * + * You can also use your own notification classes, just make sure the class is named after one of + * the `Spatie\Backup\Events` classes. + */ + 'notifications' => [ + + 'notifications' => [ + \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => [], + \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => [], + \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => [], + \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => [], + \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => [], + \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => [], + ], + + /* + * Here you can specify the notifiable to which the notifications should be sent. The default + * notifiable will use the variables specified in this config file. + */ + 'notifiable' => \Spatie\Backup\Notifications\Notifiable::class, + + 'mail' => [ + 'to' => 'your@example.com', + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + ], + + 'slack' => [ + 'webhook_url' => '', + + /* + * If this is set to null the default channel of the webhook will be used. + */ + 'channel' => null, + + 'username' => null, + + 'icon' => null, + + ], + ], + + /* + * Here you can specify which backups should be monitored. + * If a backup does not meet the specified requirements the + * UnHealthyBackupWasFound event will be fired. + */ + 'monitor_backups' => [ + [ + 'name' => env('APP_NAME', 'laravel-backup'), + 'disks' => ['local'], + 'health_checks' => [ + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, + ], + ], + + /* + [ + 'name' => 'name of the second app', + 'disks' => ['local', 's3'], + 'health_checks' => [ + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, + \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, + ], + ], + */ + ], + + 'cleanup' => [ + /* + * The strategy that will be used to cleanup old backups. The default strategy + * will keep all backups for a certain amount of days. After that period only + * a daily backup will be kept. After that period only weekly backups will + * be kept and so on. + * + * No matter how you configure it the default strategy will never + * delete the newest backup. + */ + 'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class, + + 'default_strategy' => [ + + /* + * The number of days for which backups must be kept. + */ + 'keep_all_backups_for_days' => 7, + + /* + * The number of days for which daily backups must be kept. + */ + 'keep_daily_backups_for_days' => 16, + + /* + * The number of weeks for which one weekly backup must be kept. + */ + 'keep_weekly_backups_for_weeks' => 8, + + /* + * The number of months for which one monthly backup must be kept. + */ + 'keep_monthly_backups_for_months' => 4, + + /* + * The number of years for which one yearly backup must be kept. + */ + 'keep_yearly_backups_for_years' => 2, + + /* + * After cleaning up the backups remove the oldest backup until + * this amount of megabytes has been reached. + */ + 'delete_oldest_backups_when_using_more_megabytes_than' => 5000, + ], + ], + + 'queue' => [ + 'name' => env('BACKUP_QUEUE_NAME', 'backup') + ] + +]; diff --git a/config/cache.php b/config/cache.php index a8508929..65c3bebb 100644 --- a/config/cache.php +++ b/config/cache.php @@ -38,6 +38,7 @@ return [ 'array' => [ 'driver' => 'array', + 'serialize' => false, ], 'database' => [ diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 00000000..558369dc --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/crater.php b/config/crater.php index 53628260..0a13d4a3 100644 --- a/config/crater.php +++ b/config/crater.php @@ -3,12 +3,39 @@ return [ /* - |-------------------------------------------------------------------------- - | Crater Configuration - |-------------------------------------------------------------------------- - | + * Current version of the application. */ + 'version' => '4.0.0', - 'version' => '3.2.0', + /* + * List of languages supported by Crater. + */ + 'languages' => [ + ["code"=>"ar", "name" => "Arabic"], + ["code"=>"nl", "name" => "Dutch"], + ["code"=>"en", "name" => "English"], + ["code"=>"fr", "name" => "French"], + ["code"=>"de", "name" => "German"], + ["code"=>"it", "name" => "Italian"], + ["code"=>"pt-br", "name" => "Portuguese (Brazilian)"], + ["code"=>"es", "name" => "Spanish"], + ], + /* + * List of Fiscal Years + */ + 'fiscal_years' => [ + ['key' => 'january-december' , 'value' => '1-12'], + ['key' => 'february-january' , 'value' => '2-1'], + ['key' => 'march-february' , 'value' => '3-2'], + ['key' => 'april-march' , 'value' => '4-3'], + ['key' => 'may-april' , 'value' => '5-4'], + ['key' => 'june-may' , 'value' => '6-5'], + ['key' => 'july-june' , 'value' => '7-6'], + ['key' => 'august-july' , 'value' => '8-7'], + ['key' => 'september-august' , 'value' => '9-8'], + ['key' => 'october-september', 'value' => '10-9'], + ['key' => 'november-october' , 'value' => '11-10'], + ['key' => 'december-november', 'value' => '12-11'], + ] ]; diff --git a/config/filesystems.php b/config/filesystems.php index c536be09..72adfc56 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -51,7 +51,7 @@ return [ 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => env('APP_URL') . '/storage', 'visibility' => 'public', ], @@ -61,12 +61,50 @@ return [ 'secret' => env('AWS_SECRET'), 'region' => env('AWS_REGION'), 'bucket' => env('AWS_BUCKET'), + 'root' => env('AWS_ROOT') ], 'media' => [ 'driver' => 'local', 'root' => public_path('media'), ], + + 'doSpaces' => [ + 'type' => 'AwsS3', + 'driver' => 's3', + 'key' => env('DO_SPACES_KEY'), + 'secret' => env('DO_SPACES_SECRET'), + 'region' => env('DO_SPACES_REGION'), + 'bucket' => env('DO_SPACES_BUCKET'), + 'root' => env('DO_SPACES_ROOT'), + 'endpoint' => env('DO_SPACES_ENDPOINT'), + 'use_path_style_endpoint' => false, + ], + + 'dropbox' => [ + 'driver' => 'dropbox', + 'type' => 'DropboxV2', + 'token' => env('DROPBOX_TOKEN'), + 'key' => env('DROPBOX_KEY'), + 'secret' => env('DROPBOX_SECRET'), + 'app' => env('DROPBOX_APP'), + 'root' => env('DROPBOX_ROOT'), + ], + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), ], ]; diff --git a/config/hashids.php b/config/hashids.php new file mode 100644 index 00000000..70248c9d --- /dev/null +++ b/config/hashids.php @@ -0,0 +1,60 @@ + 'main', + + /* + |-------------------------------------------------------------------------- + | Hashids Connections + |-------------------------------------------------------------------------- + | + | Here are each of the connections setup for your application. Example + | configuration has been included, but you may add as many connections as + | you would like. + | + */ + + 'connections' => [ + Invoice::class => [ + 'salt' => Invoice::class.'7623e9b0009feff8e024a689d6ef59ce', + 'length' => '20', + 'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' + ], + Estimate::class => [ + 'salt' => Estimate::class.'7623e9b0009feff8e024a689d6ef59ce', + 'length' => '20', + 'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' + ], + Payment::class => [ + 'salt' => Payment::class.'7623e9b0009feff8e024a689d6ef59ce', + 'length' => '20', + 'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' + ], + ], + +]; diff --git a/config/medialibrary.php b/config/media-library.php similarity index 65% rename from config/medialibrary.php rename to config/media-library.php index 00b84465..0391faa0 100644 --- a/config/medialibrary.php +++ b/config/media-library.php @@ -23,14 +23,7 @@ return [ /* * The fully qualified class name of the media model. */ - 'media_model' => Spatie\MediaLibrary\Models\Media::class, - - 's3' => [ - /* - * The domain that should be prepended when generating urls. - */ - 'domain' => 'https://'.env('AWS_BUCKET').'.s3.amazonaws.com', - ], + 'media_model' => Spatie\MediaLibrary\MediaCollections\Models\Media::class, 'remote' => [ /* @@ -49,12 +42,12 @@ return [ 'responsive_images' => [ /* - * This class is responsible for calculating the target widths of the responsive - * images. By default we optimize for filesize and create variations that each are 20% - * smaller than the previous one. More info in the documentation. - * - * https://docs.spatie.be/laravel-medialibrary/v7/advanced-usage/generating-responsive-images - */ + * This class is responsible for calculating the target widths of the responsive + * images. By default we optimize for filesize and create variations that each are 20% + * smaller than the previous one. More info in the documentation. + * + * https://docs.spatie.be/laravel-medialibrary/v8/advanced-usage/generating-responsive-images + */ 'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class, /* @@ -71,18 +64,41 @@ return [ ], /* - * When urls to files get generated, this class will be called. Leave empty - * if your files are stored locally above the site root or on s3. + * When converting Media instances to response the medialibrary will add + * a `loading` attribute to the `img` tag. Here you can set the default + * value of that attribute. + * + * Possible values: 'auto', 'lazy' and 'eager, + * + * More info: https://css-tricks.com/native-lazy-loading/ */ - 'url_generator' => null, + 'default_loading_attribute_value' => 'auto', + + /* + * This is the class that is responsible for naming conversion files. By default, + * it will use the filename of the original and concatenate the conversion name to it. + */ + 'conversion_file_namer' => \Spatie\MediaLibrary\Conversions\DefaultConversionFileNamer::class, /* * The class that contains the strategy for determining a media file's path. */ - 'path_generator' => null, + 'path_generator' => \Crater\Generators\CustomPathGenerator::class, /* - * Medialibrary will try to optimize all converted images by removing + * When urls to files get generated, this class will be called. Use the default + * if your files are stored locally above the site root or on s3. + */ + 'url_generator' => Spatie\MediaLibrary\Support\UrlGenerator\DefaultUrlGenerator::class, + + /* + * Whether to activate versioning when urls to files get generated. + * When activated, this attaches a ?v=xx query string to the URL. + */ + 'version_urls' => false, + + /* + * The media library will try to optimize all converted images by removing * metadata and applying a little bit of compression. These are * the optimizers that will be used by default. */ @@ -112,18 +128,18 @@ return [ * These generators will be used to create an image of media files. */ 'image_generators' => [ - Spatie\MediaLibrary\ImageGenerators\FileTypes\Image::class, - Spatie\MediaLibrary\ImageGenerators\FileTypes\Webp::class, - Spatie\MediaLibrary\ImageGenerators\FileTypes\Pdf::class, - Spatie\MediaLibrary\ImageGenerators\FileTypes\Svg::class, - Spatie\MediaLibrary\ImageGenerators\FileTypes\Video::class, + Spatie\MediaLibrary\Conversions\ImageGenerators\Image::class, + Spatie\MediaLibrary\Conversions\ImageGenerators\Webp::class, + Spatie\MediaLibrary\Conversions\ImageGenerators\Pdf::class, + Spatie\MediaLibrary\Conversions\ImageGenerators\Svg::class, + Spatie\MediaLibrary\Conversions\ImageGenerators\Video::class, ], /* * The engine that should perform the image conversions. * Should be either `gd` or `imagick`. */ - 'image_driver' => 'gd', + 'image_driver' => env('IMAGE_DRIVER', 'gd'), /* * FFMPEG & FFProbe binaries paths, only used if you try to generate video @@ -135,7 +151,7 @@ return [ /* * The path where to store temporary files while performing image conversions. - * If set to null, storage_path('medialibrary/temp') will be used. + * If set to null, storage_path('media-library/temp') will be used. */ 'temporary_directory_path' => null, @@ -144,7 +160,7 @@ return [ * your custom jobs extend the ones provided by the package. */ 'jobs' => [ - 'perform_conversions' => Spatie\MediaLibrary\Jobs\PerformConversions::class, - 'generate_responsive_images' => Spatie\MediaLibrary\Jobs\GenerateResponsiveImages::class, + 'perform_conversions' => \Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob::class, + 'generate_responsive_images' => \Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob::class, ], ]; diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 00000000..51d060f7 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,47 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost,127.0.0.1,127.0.0.1:8000,::1')), + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => Crater\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => Crater\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/config/services.php b/config/services.php index bc4699d8..d9b0607f 100644 --- a/config/services.php +++ b/config/services.php @@ -35,7 +35,7 @@ return [ ], 'stripe' => [ - 'model' => Crater\User::class, + 'model' => \Crater\Models\User::class, 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), 'webhook' => [ diff --git a/config/session.php b/config/session.php index 65e3d5a0..e26bfa66 100644 --- a/config/session.php +++ b/config/session.php @@ -14,7 +14,7 @@ return [ | you may specify any of the other wonderful drivers provided here. | | Supported: "file", "cookie", "database", "apc", - | "memcached", "redis", "array" + | "memcached", "redis", "dynamodb", "array" | */ @@ -31,7 +31,7 @@ return [ | */ - 'lifetime' => 120, + 'lifetime' => env('SESSION_LIFETIME', 120), 'expire_on_close' => false, @@ -92,9 +92,9 @@ return [ | Session Cache Store |-------------------------------------------------------------------------- | - | When using the "apc" or "memcached" session drivers, you may specify a - | cache store that should be used for these sessions. This value must - | correspond with one of the application's configured cache stores. + | When using the "apc", "memcached", or "dynamodb" session drivers you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". | */ @@ -126,7 +126,7 @@ return [ 'cookie' => env( 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + Str::slug(env('APP_NAME', 'laravel'), '_') . '_session' ), /* @@ -166,7 +166,7 @@ return [ | */ - 'secure' => env('SESSION_SECURE_COOKIE', false), + 'secure' => env('SESSION_SECURE_COOKIE'), /* |-------------------------------------------------------------------------- @@ -188,12 +188,12 @@ return [ | | This option determines how your cookies behave when cross-site requests | take place, and can be used to mitigate CSRF attacks. By default, we - | do not enable this as other CSRF protection services are in place. + | will set this value to "lax" since this is a secure default value. | - | Supported: "lax", "strict" + | Supported: "lax", "strict", "none", null | */ - 'same_site' => null, + 'same_site' => 'lax', ]; diff --git a/database/factories/AddressFactory.php b/database/factories/AddressFactory.php index acf6e904..93fda69d 100644 --- a/database/factories/AddressFactory.php +++ b/database/factories/AddressFactory.php @@ -1,21 +1,39 @@ define(Address::class, function (Faker $faker) { - return [ - 'name' => $faker->name, - 'address_street_1' => $faker->streetAddress, - 'address_street_2' => $faker->streetAddress, - 'city' => $faker->city, - 'state' => $faker->state, - 'country_id' => 231, - 'zip' => $faker->postcode, - 'phone' => $faker->phoneNumber, - 'fax' => $faker->phoneNumber, - 'type' => Address::BILLING_TYPE - ]; -}); +class AddressFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Address::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name, + 'address_street_1' => $this->faker->streetAddress, + 'address_street_2' => $this->faker->streetAddress, + 'city' => $this->faker->city, + 'state' => $this->faker->state, + 'country_id' => 231, + 'zip' => $this->faker->postcode, + 'phone' => $this->faker->phoneNumber, + 'fax' => $this->faker->phoneNumber, + 'type' => $this->faker->randomElement([Address::BILLING_TYPE, Address::SHIPPING_TYPE]), + 'user_id' => User::factory() + ]; + } +} diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index 64813a49..e59b0af7 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -1,13 +1,29 @@ define(Company::class, function (Faker $faker) { - return [ - 'unique_hash' => str_random(60), - 'name' => $faker->name - ]; -}); +class CompanyFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Company::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'unique_hash' => str_random(60), + 'name' => $this->faker->name + ]; + } +} diff --git a/database/factories/CompanySettingFactory.php b/database/factories/CompanySettingFactory.php new file mode 100644 index 00000000..86fff366 --- /dev/null +++ b/database/factories/CompanySettingFactory.php @@ -0,0 +1,31 @@ + $this->faker->word, + 'value' => $this->faker->word, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + ]; + } +} diff --git a/database/factories/CustomFieldFactory.php b/database/factories/CustomFieldFactory.php new file mode 100644 index 00000000..6b9b605d --- /dev/null +++ b/database/factories/CustomFieldFactory.php @@ -0,0 +1,38 @@ + $this->faker->name, + 'label' => $this->faker->name, + 'order' => $this->faker->randomDigitNotNull, + 'is_required' => $this->faker->randomElement([true, false]), + 'model_type'=> $this->faker->randomElement(['Customer', 'Invoice', 'Estimate', 'Expense', 'Payment']), + 'slug' => function (array $item) { + return clean_slug($item['model_type'], $item['label']); + }, + 'type' => $this->faker->randomElement(['Text', 'Textarea', 'Phone', 'URL', 'Number','Dropdown' , 'Switch', 'Date', 'DateTime', 'Time']), + 'company_id' => User::where('role', 'super admin')->first()->company_id, + ]; + } +} diff --git a/database/factories/CustomFieldValueFactory.php b/database/factories/CustomFieldValueFactory.php new file mode 100644 index 00000000..f31dde85 --- /dev/null +++ b/database/factories/CustomFieldValueFactory.php @@ -0,0 +1,34 @@ + $this->faker->name , + 'custom_field_valuable_id' => 1, + 'type' => $this->faker->name, + 'custom_field_id' => CustomField::factory(), + 'company_id' => User::where('role', 'super admin')->first()->company_id, + ]; + } +} diff --git a/database/factories/EmailLogFactory.php b/database/factories/EmailLogFactory.php new file mode 100644 index 00000000..8f7754b8 --- /dev/null +++ b/database/factories/EmailLogFactory.php @@ -0,0 +1,38 @@ + $this->faker->unique()->safeEmail, + 'to' => $this->faker->unique()->safeEmail, + 'subject' => $this->faker->sentence, + 'body' => $this->faker->text, + 'mailable_type' => $this->faker->randomElement([Invoice::class, Estimate::class, Payment::class]), + 'mailable_id' => function (array $log) { + return $log['mailable_type']::factory(); + } + ]; + } +} diff --git a/database/factories/EstimateFactory.php b/database/factories/EstimateFactory.php index be9108c9..5e70cbea 100644 --- a/database/factories/EstimateFactory.php +++ b/database/factories/EstimateFactory.php @@ -1,45 +1,96 @@ define(Estimate::class, function (Faker $faker) { - return [ - 'estimate_date' => $faker->date($format = 'Y-m-d', $max = 'now'), - 'expiry_date' => $faker->date($format = 'Y-m-d', $max = 'now'), - 'estimate_number' => 'EST-'.Estimate::getNextEstimateNumber('EST'), - 'reference_number' => Estimate::getNextEstimateNumber('EST'), - 'company_id' => User::find(1)->company_id, - 'user_id' => function () { - return factory(User::class)->create(['role' => 'customer'])->id; - }, - 'status' => Estimate::STATUS_DRAFT, - 'estimate_template_id' => 1, - 'sub_total' => $faker->randomDigitNotNull, - 'discount' => 0, - 'discount_type' => 'fixed', - 'discount_val' => 0, - 'tax_per_item' => 'YES', - 'discount_per_item' => 'No', - 'total' => $faker->randomDigitNotNull, - 'tax' => $faker->randomDigitNotNull, - 'notes' => $faker->text(80), - 'unique_hash' => str_random(60) - ]; -}); +class EstimateFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Estimate::class; -$factory->afterCreating(Estimate::class, function ($estimate, $faker) { - $estimate->items()->save(factory(EstimateItem::class)->make()); - $estimate->items()->save(factory(EstimateItem::class)->make()); -}); + public function sent() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Estimate::STATUS_SENT, + ]; + }); + } -$factory->afterCreating(Estimate::class, function ($estimate, $faker) { - $estimate->taxes()->save(factory(Tax::class)->make()); - $estimate->items()->save(factory(Tax::class)->make()); -}); + public function viewed() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Estimate::STATUS_VIEWED, + ]; + }); + } + + public function expired() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Estimate::STATUS_EXPIRED, + ]; + }); + } + + public function accepted() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Estimate::STATUS_ACCEPTED, + ]; + }); + } + + public function rejected() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Estimate::STATUS_REJECTED, + ]; + }); + } + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'estimate_date' => $this->faker->date('Y-m-d', 'now'), + 'expiry_date' => $this->faker->date('Y-m-d', 'now'), + 'estimate_number' => 'EST-'.Estimate::getNextEstimateNumber('EST'), + 'reference_number' => Estimate::getNextEstimateNumber('EST'), + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'user_id' => User::factory()->create(['role' => 'customer'])->id, + 'status' => Estimate::STATUS_DRAFT, + 'estimate_template_id' => EstimateTemplate::find(1) ?? EstimateTemplate::factory(), + 'sub_total' => $this->faker->randomDigitNotNull, + 'total' => $this->faker->randomDigitNotNull, + 'discount_type' => $this->faker->randomElement(['percentage', 'fixed']), + 'discount_val' => function (array $estimate) { + return $estimate['discount_type'] == 'percentage' ? $this->faker->numberBetween($min = 0, $max = 100) : $this->faker->randomDigitNotNull; + }, + 'discount' => function (array $estimate) { + return $estimate['discount_type'] == 'percentage' ? (($estimate['discount_val'] * $estimate['total']) / 100) : $estimate['discount_val']; + }, + 'tax_per_item' => 'YES', + 'discount_per_item' => 'No', + 'tax' => $this->faker->randomDigitNotNull, + 'notes' => $this->faker->text(80), + 'unique_hash' => str_random(60), + ]; + } +} diff --git a/database/factories/EstimateItemFactory.php b/database/factories/EstimateItemFactory.php index 369f0739..72e34559 100644 --- a/database/factories/EstimateItemFactory.php +++ b/database/factories/EstimateItemFactory.php @@ -1,34 +1,52 @@ define(EstimateItem::class, function (Faker $faker) { - return [ - 'item_id' => function () { - return factory(Item::class)->create()->id; - }, - 'name' => function (array $item) { - return Item::find($item['item_id'])->name; - }, - 'description' => function (array $item) { - return Item::find($item['item_id'])->description; - }, - 'price' => function (array $item) { - return Item::find($item['item_id'])->price; - }, - 'quantity' => $faker->randomDigitNotNull, - 'company_id' => User::find(1)->company_id, - 'discount_type' => 'fixed', - 'tax' => $faker->randomDigitNotNull, - 'discount_val' => 0, - 'total' => function (array $item) { - return ($item['price'] * $item['quantity']); - }, - 'discount' => 0 - ]; -}); +class EstimateItemFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = EstimateItem::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'item_id' => Item::factory(), + 'name' => function (array $item) { + return Item::find($item['item_id'])->name; + }, + 'description' => function (array $item) { + return Item::find($item['item_id'])->description; + }, + 'price' => function (array $item) { + return Item::find($item['item_id'])->price; + }, + 'quantity' => $this->faker->randomDigitNotNull, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'tax' => $this->faker->randomDigitNotNull, + 'total' => function (array $item) { + return ($item['price'] * $item['quantity']); + }, + 'discount_type' => $this->faker->randomElement(['percentage', 'fixed']), + 'discount_val' => function (array $estimate) { + return $estimate['discount_type'] == 'percentage' ? $this->faker->numberBetween($min = 0, $max = 100) : $this->faker->randomDigitNotNull; + }, + 'discount' => function (array $estimate) { + return $estimate['discount_type'] == 'percentage' ? (($estimate['discount_val'] * $estimate['total']) / 100) : $estimate['discount_val']; + } + ]; + } +} diff --git a/database/factories/EstimateTemplateFactory.php b/database/factories/EstimateTemplateFactory.php index b1ca6056..8e1b4361 100644 --- a/database/factories/EstimateTemplateFactory.php +++ b/database/factories/EstimateTemplateFactory.php @@ -1,14 +1,30 @@ define(EstimateTemplate::class, function (Faker $faker) { - return [ - 'path' => $faker->word, - 'view' => $faker->word, - 'name' => $faker->word, - ]; -}); +class EstimateTemplateFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = EstimateTemplate::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'path' => $this->faker->word, + 'view' => $this->faker->word, + 'name' => $this->faker->word, + ]; + } +} diff --git a/database/factories/ExpenseCategoryFactory.php b/database/factories/ExpenseCategoryFactory.php index 298ec748..f5d18934 100644 --- a/database/factories/ExpenseCategoryFactory.php +++ b/database/factories/ExpenseCategoryFactory.php @@ -1,15 +1,31 @@ define(ExpenseCategory::class, function (Faker $faker) { - return [ - 'name' => $faker->word, - 'company_id' => User::find(1)->company_id, - 'description' => $faker->text - ]; -}); +class ExpenseCategoryFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = ExpenseCategory::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->word, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'description' => $this->faker->text + ]; + } +} diff --git a/database/factories/ExpenseFactory.php b/database/factories/ExpenseFactory.php index 4d5bec5f..6ecbbab8 100644 --- a/database/factories/ExpenseFactory.php +++ b/database/factories/ExpenseFactory.php @@ -1,21 +1,35 @@ define(Expense::class, function (Faker $faker) { - return [ - 'expense_date' => $faker->date($format = 'd/m/Y', $max = 'now'), - 'expense_category_id' => function () { - return factory(ExpenseCategory::class)->create()->id; - }, - 'company_id' => User::find(1)->company_id, - 'amount' => $faker->randomDigitNotNull, - 'notes' => $faker->text, - 'attachment_receipt' => null - ]; -}); +class ExpenseFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Expense::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'expense_date' => $this->faker->date('Y-m-d', 'now'), + 'expense_category_id' => ExpenseCategory::factory(), + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'amount' => $this->faker->randomDigitNotNull, + 'notes' => $this->faker->text, + 'attachment_receipt' => null + ]; + } +} diff --git a/database/factories/FileDiskFactory.php b/database/factories/FileDiskFactory.php new file mode 100644 index 00000000..8b689d4f --- /dev/null +++ b/database/factories/FileDiskFactory.php @@ -0,0 +1,35 @@ + $this->faker->word, + 'driver' => 'local', + 'set_as_default' => false, + 'credentials' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ] + + ]; + } +} diff --git a/database/factories/InvoiceFactory.php b/database/factories/InvoiceFactory.php index 2fcc6aa3..f2f0f9c0 100644 --- a/database/factories/InvoiceFactory.php +++ b/database/factories/InvoiceFactory.php @@ -1,49 +1,127 @@ define(Invoice::class, function (Faker $faker) { - return [ - 'invoice_date' => $faker->date($format = 'Y-m-d', $max = 'now'), - 'due_date' => $faker->date($format = 'Y-m-d', $max = 'now'), - 'invoice_number' => 'INV-'.Invoice::getNextInvoiceNumber('INV'), - 'reference_number' => Invoice::getNextInvoiceNumber('INV'), - 'user_id' => function () { - return factory(User::class)->create(['role' => 'customer'])->id; - }, - 'invoice_template_id' => 1, - 'status' => Invoice::STATUS_DRAFT, - 'tax_per_item' => 'NO', - 'discount_per_item' => 'NO', - 'paid_status' => Invoice::STATUS_UNPAID, - 'company_id' => User::find(1)->company_id, - 'sub_total' => $faker->randomDigitNotNull, - 'discount' => 0, - 'discount_type' => 'fixed', - 'discount_val' => 0, - 'total' => $faker->randomDigitNotNull, - 'tax' => $faker->randomDigitNotNull, - 'due_amount' => function (array $invoice) { - return $invoice['total']; - }, - 'notes' => $faker->text(80), - 'unique_hash' => str_random(60) - ]; -}); +class InvoiceFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Invoice::class; -$factory->afterCreating(Invoice::class, function ($invoice, $faker) { - $invoice->items()->save(factory(InvoiceItem::class)->make()); - $invoice->items()->save(factory(InvoiceItem::class)->make()); -}); + public function sent() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_SENT, + ]; + }); + } -$factory->afterCreating(Invoice::class, function ($invoice, $faker) { - $invoice->taxes()->save(factory(Tax::class)->make()); - $invoice->items()->save(factory(Tax::class)->make()); -}); + public function viewed() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_VIEWED, + ]; + }); + } + + public function overdue() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_OVERDUE, + ]; + }); + } + + public function completed() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_COMPLETED, + ]; + }); + } + + public function due() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_DUE, + ]; + }); + } + + public function unpaid() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_UNPAID, + ]; + }); + } + + public function partiallyPaid() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_PARTIALLY_PAID, + ]; + }); + } + + public function paid() + { + return $this->state(function (array $attributes) { + return [ + 'status' => Invoice::STATUS_PAID, + ]; + }); + } + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'invoice_date' => $this->faker->date('Y-m-d', 'now'), + 'due_date' => $this->faker->date('Y-m-d', 'now'), + 'invoice_number' => 'INV-'.Invoice::getNextInvoiceNumber('INV'), + 'reference_number' => Invoice::getNextInvoiceNumber('INV'), + 'user_id' => User::factory()->create(['role' => 'customer'])->id, + 'invoice_template_id' => InvoiceTemplate::find(1) ?? InvoiceTemplate::factory(), + 'status' => Invoice::STATUS_DRAFT, + 'tax_per_item' => 'NO', + 'discount_per_item' => 'NO', + 'paid_status' => Invoice::STATUS_UNPAID, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'sub_total' => $this->faker->randomDigitNotNull, + 'total' => $this->faker->randomDigitNotNull, + 'discount_type' => $this->faker->randomElement(['percentage', 'fixed']), + 'discount_val' => function (array $invoice) { + return $invoice['discount_type'] == 'percentage' ? $this->faker->numberBetween($min = 0, $max = 100) : $this->faker->randomDigitNotNull; + }, + 'discount' => function (array $invoice) { + return $invoice['discount_type'] == 'percentage' ? (($invoice['discount_val'] * $invoice['total']) / 100) : $invoice['discount_val']; + }, + 'tax' => $this->faker->randomDigitNotNull, + 'due_amount' => function (array $invoice) { + return $invoice['total']; + }, + 'notes' => $this->faker->text(80), + 'unique_hash' => str_random(60) + ]; + } +} diff --git a/database/factories/InvoiceItemFactory.php b/database/factories/InvoiceItemFactory.php index 5c52f210..c64e82da 100644 --- a/database/factories/InvoiceItemFactory.php +++ b/database/factories/InvoiceItemFactory.php @@ -1,34 +1,52 @@ define(InvoiceItem::class, function (Faker $faker) { - return [ - 'item_id' => function () { - return factory(Item::class)->create()->id; - }, - 'name' => function (array $item) { - return Item::find($item['item_id'])->name; - }, - 'description' => function (array $item) { - return Item::find($item['item_id'])->description; - }, - 'price' => function (array $item) { - return Item::find($item['item_id'])->price; - }, - 'company_id' => User::find(1)->company_id, - 'quantity' => $faker->randomDigitNotNull, - 'discount_type' => 'fixed', - 'discount_val' => 0, - 'tax' => $faker->randomDigitNotNull, - 'total' => function (array $item) { - return ($item['price'] * $item['quantity']); - }, - 'discount' => 0 - ]; -}); +class InvoiceItemFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = InvoiceItem::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'item_id' => Item::factory(), + 'name' => function (array $item) { + return Item::find($item['item_id'])->name; + }, + 'description' => function (array $item) { + return Item::find($item['item_id'])->description; + }, + 'price' => function (array $item) { + return Item::find($item['item_id'])->price; + }, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'quantity' => $this->faker->randomDigitNotNull, + 'total' => function (array $item) { + return ($item['price'] * $item['quantity']); + }, + 'discount_type' => $this->faker->randomElement(['percentage', 'fixed']), + 'discount_val' => function (array $invoice) { + return $invoice['discount_type'] == 'percentage' ? $this->faker->numberBetween($min = 0, $max = 100) : $this->faker->randomDigitNotNull; + }, + 'discount' => function (array $invoice) { + return $invoice['discount_type'] == 'percentage' ? (($invoice['discount_val'] * $invoice['total']) / 100) : $invoice['discount_val']; + }, + 'tax' => $this->faker->randomDigitNotNull, + ]; + } +} diff --git a/database/factories/InvoiceTemplateFactory.php b/database/factories/InvoiceTemplateFactory.php index 12f83641..c45dd8c6 100644 --- a/database/factories/InvoiceTemplateFactory.php +++ b/database/factories/InvoiceTemplateFactory.php @@ -1,14 +1,30 @@ define(InvoiceTemplate::class, function (Faker $faker) { - return [ - 'path' => $faker->word, - 'view' => $faker->word, - 'name' => $faker->word, - ]; -}); +class InvoiceTemplateFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = InvoiceTemplate::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'path' => $this->faker->word, + 'view' => $this->faker->word, + 'name' => $this->faker->word, + ]; + } +} diff --git a/database/factories/ItemFactory.php b/database/factories/ItemFactory.php index 613b14dc..36ec5fab 100644 --- a/database/factories/ItemFactory.php +++ b/database/factories/ItemFactory.php @@ -1,23 +1,34 @@ define(Item::class, function (Faker $faker) { - return [ - 'name' => $faker->name, - 'description' => $faker->text, - 'company_id' => User::find(1)->company_id, - 'price' => $faker->randomDigitNotNull, - 'unit' => 'kg' - ]; -}); +class ItemFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Item::class; -$factory->afterCreating(Item::class, function ($item, $faker) { - $item->taxes()->save(factory(Tax::class)->make()); - $item->taxes()->save(factory(Tax::class)->make()); -}); + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name, + 'description' => $this->faker->text, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'price' => $this->faker->randomDigitNotNull, + 'unit_id' => Unit::factory() + ]; + } +} diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php deleted file mode 100644 index 3f462f21..00000000 --- a/database/factories/ModelFactory.php +++ /dev/null @@ -1,40 +0,0 @@ -define(User::class, function (Faker\Generator $faker) { - static $password; - - return [ - 'name' => $faker->name, - 'company_name' => $faker->company, - 'contact_name' => $faker->name, - 'website' => $faker->url, - 'enable_portal' => true, - 'email' => $faker->unique()->safeEmail, - 'phone' => $faker->phoneNumber, - 'company_id' => User::find(1)->company_id, - 'role' => 'admin', - 'password' => $password ?: $password = Hash::make('secret'), - 'remember_token' => str_random(10), - 'currency_id' => Currency::first()->id - ]; -}); - -$factory->afterCreating(User::class, function ($user, $faker) { - $user->addresses()->save(factory(Address::class)->make()); - $user->addresses()->save(factory(Address::class)->make(['type' => Address::SHIPPING_TYPE])); -}); diff --git a/database/factories/NoteFactory.php b/database/factories/NoteFactory.php new file mode 100644 index 00000000..9574cfd8 --- /dev/null +++ b/database/factories/NoteFactory.php @@ -0,0 +1,30 @@ + $this->faker->randomElement(['Invoice', 'Estimate', 'Payment']), + 'name' => $this->faker->word, + 'notes' => $this->faker->text + ]; + } +} diff --git a/database/factories/PaymentFactory.php b/database/factories/PaymentFactory.php index bd4ec5b1..91a910cf 100644 --- a/database/factories/PaymentFactory.php +++ b/database/factories/PaymentFactory.php @@ -1,22 +1,34 @@ define(Payment::class, function (Faker $faker) { - return [ - 'user_id' => function () { - return factory(User::class)->create(['role' => 'customer'])->id; - }, - 'payment_date' => $faker->date($format = 'Y-m-d', $max = 'now'), - 'company_id' => User::find(1)->company_id, - 'notes' => $faker->text(80), - 'amount' => $faker->randomDigitNotNull, - 'payment_number' => 'PAY-'.Payment::getNextPaymentNumber('PAY'), - ]; -}); +class PaymentFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Payment::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'user_id' => User::factory()->create(['role' => 'customer'])->id, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'payment_date' => $this->faker->date('Y-m-d', 'now'), + 'notes' => $this->faker->text(80), + 'amount' => $this->faker->randomDigitNotNull, + 'payment_number' => 'PAY-' . Payment::getNextPaymentNumber('PAY'), + ]; + } +} diff --git a/database/factories/PaymentMethodFactory.php b/database/factories/PaymentMethodFactory.php index c2093a5f..4e4a5711 100644 --- a/database/factories/PaymentMethodFactory.php +++ b/database/factories/PaymentMethodFactory.php @@ -1,14 +1,30 @@ define(PaymentMethod::class, function (Faker $faker) { - return [ - 'name' => $faker->name, - 'company_id' => User::find(1)->company_id, - ]; -}); +class PaymentMethodFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = PaymentMethod::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + ]; + } +} diff --git a/database/factories/TaxFactory.php b/database/factories/TaxFactory.php index 6f6a9e2f..3a5fbb29 100644 --- a/database/factories/TaxFactory.php +++ b/database/factories/TaxFactory.php @@ -1,24 +1,38 @@ define(Tax::class, function (Faker $faker) { - return [ - 'tax_type_id' => function () { - return factory(TaxType::class)->create()->id; - }, - 'percent' => function (array $item) { - return TaxType::find($item['tax_type_id'])->percent; - }, - 'name' => function (array $item) { - return TaxType::find($item['tax_type_id'])->name; - }, - 'company_id' => User::find(1)->company_id, - 'amount' => $faker->randomDigitNotNull - ]; -}); +class TaxFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Tax::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'tax_type_id' => TaxType::factory(), + 'percent' => function (array $item) { + return TaxType::find($item['tax_type_id'])->percent; + }, + 'name' => function (array $item) { + return TaxType::find($item['tax_type_id'])->name; + }, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + 'amount' => $this->faker->randomDigitNotNull + ]; + } +} diff --git a/database/factories/TaxTypeFactory.php b/database/factories/TaxTypeFactory.php index 62f366d0..1c3429dd 100644 --- a/database/factories/TaxTypeFactory.php +++ b/database/factories/TaxTypeFactory.php @@ -1,18 +1,34 @@ define(TaxType::class, function (Faker $faker) { - return [ - 'name' => $faker->word, - 'company_id' => User::find(1)->company_id, - 'percent' => $faker->randomDigitNotNull, - 'description' => $faker->text, - 'compound_tax' => 0, - 'collective_tax' => 0 - ]; -}); +class TaxTypeFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = TaxType::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->word, + 'company_id' => User::where('role','super admin')->first()->company_id, + 'percent' => $this->faker->numberBetween($min = 0, $max = 100), + 'description' => $this->faker->text, + 'compound_tax' => 0, + 'collective_tax' => 0 + ]; + } +} diff --git a/database/factories/UnitFactory.php b/database/factories/UnitFactory.php new file mode 100644 index 00000000..13036713 --- /dev/null +++ b/database/factories/UnitFactory.php @@ -0,0 +1,30 @@ + $this->faker->name, + 'company_id' => User::where('role', 'super admin')->first()->company_id, + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 00000000..32ded32d --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,40 @@ + $this->faker->name, + 'company_name' => $this->faker->company, + 'contact_name' => $this->faker->name, + 'website' => $this->faker->url, + 'enable_portal' => true, + 'email' => $this->faker->unique()->safeEmail, + 'phone' => $this->faker->phoneNumber, + 'company_id' => User::find(1)->company_id, + 'role' => 'super admin', + 'password' => Hash::make('secret'), + 'currency_id' => Currency::first()->id + ]; + } +} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php index d132eaa6..0ee0a36a 100644 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -1,7 +1,8 @@ string('email')->index(); - $table->string('token')->index(); + $table->string('token'); $table->timestamp('created_at')->nullable(); }); } diff --git a/database/migrations/2017_12_02_204902_create_permission_tables.php b/database/migrations/2017_12_02_204902_create_permission_tables.php deleted file mode 100644 index 6c17206e..00000000 --- a/database/migrations/2017_12_02_204902_create_permission_tables.php +++ /dev/null @@ -1,90 +0,0 @@ -increments('id'); - $table->string('name'); - $table->string('guard_name'); - $table->timestamps(); - }); - - Schema::create($tableNames['roles'], function (Blueprint $table) { - $table->increments('id'); - $table->string('name'); - $table->string('guard_name'); - $table->timestamps(); - }); - - Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames) { - $table->integer('permission_id')->unsigned(); - $table->morphs('model'); - - $table->foreign('permission_id') - ->references('id') - ->on($tableNames['permissions']) - ->onDelete('cascade'); - - $table->primary(['permission_id', 'model_id', 'model_type']); - }); - - Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames) { - $table->integer('role_id')->unsigned(); - $table->morphs('model'); - - $table->foreign('role_id') - ->references('id') - ->on($tableNames['roles']) - ->onDelete('cascade'); - - $table->primary(['role_id', 'model_id', 'model_type']); - }); - - Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { - $table->integer('permission_id')->unsigned(); - $table->integer('role_id')->unsigned(); - - $table->foreign('permission_id') - ->references('id') - ->on($tableNames['permissions']) - ->onDelete('cascade'); - - $table->foreign('role_id') - ->references('id') - ->on($tableNames['roles']) - ->onDelete('cascade'); - - $table->primary(['permission_id', 'role_id']); - - Cache::forget('spatie.permission.cache'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - $tableNames = config('permission.table_names'); - - Schema::drop($tableNames['role_has_permissions']); - Schema::drop($tableNames['model_has_roles']); - Schema::drop($tableNames['model_has_permissions']); - Schema::drop($tableNames['roles']); - Schema::drop($tableNames['permissions']); - } -} diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 00000000..3ce00023 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,36 @@ +bigIncrements('id'); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('personal_access_tokens'); + } +} diff --git a/database/migrations/2020_02_01_063235_create_custom_fields_table.php b/database/migrations/2020_02_01_063235_create_custom_fields_table.php new file mode 100644 index 00000000..2d695a2b --- /dev/null +++ b/database/migrations/2020_02_01_063235_create_custom_fields_table.php @@ -0,0 +1,48 @@ +bigIncrements('id'); + $table->string('name'); + $table->string('slug'); + $table->string('label'); + $table->string('model_type'); + $table->string('type'); + $table->string('placeholder')->nullable(); + $table->json('options')->nullable(); + $table->boolean('boolean_answer')->nullable(); + $table->date('date_answer')->nullable(); + $table->time('time_answer')->nullable(); + $table->text('string_answer')->nullable(); + $table->unsignedBigInteger('number_answer')->nullable(); + $table->dateTime('date_time_answer')->nullable(); + $table->boolean('is_required')->default(false); + $table->unsignedBigInteger('order')->default(1); + $table->integer('company_id')->unsigned(); + $table->foreign('company_id')->references('id')->on('companies'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('custom_fields'); + } +} diff --git a/database/migrations/2020_02_01_063509_create_custom_field_values_table.php b/database/migrations/2020_02_01_063509_create_custom_field_values_table.php new file mode 100644 index 00000000..7701013d --- /dev/null +++ b/database/migrations/2020_02_01_063509_create_custom_field_values_table.php @@ -0,0 +1,44 @@ +bigIncrements('id'); + $table->string('custom_field_valuable_type'); + $table->unsignedInteger('custom_field_valuable_id'); + $table->string('type'); + $table->boolean('boolean_answer')->nullable(); + $table->date('date_answer')->nullable(); + $table->time('time_answer')->nullable(); + $table->text('string_answer')->nullable(); + $table->unsignedBigInteger('number_answer')->nullable(); + $table->dateTime('date_time_answer')->nullable(); + $table->unsignedBigInteger('custom_field_id'); + $table->foreign('custom_field_id')->references('id')->on('custom_fields'); + $table->integer('company_id')->unsigned(); + $table->foreign('company_id')->references('id')->on('companies'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('answers'); + } +} diff --git a/database/migrations/2020_09_07_103054_create_file_disks_table.php b/database/migrations/2020_09_07_103054_create_file_disks_table.php new file mode 100644 index 00000000..b137fe67 --- /dev/null +++ b/database/migrations/2020_09_07_103054_create_file_disks_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('type')->default('REMOTE'); + $table->string('driver'); + $table->boolean('set_as_default')->default(false); + $table->json('credentials'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('file_disks'); + } +} diff --git a/database/migrations/2020_09_22_153617_add_columns_to_media_table.php b/database/migrations/2020_09_22_153617_add_columns_to_media_table.php new file mode 100644 index 00000000..2410fd97 --- /dev/null +++ b/database/migrations/2020_09_22_153617_add_columns_to_media_table.php @@ -0,0 +1,34 @@ +uuid('uuid')->nullable(); + $table->string('conversions_disk')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('media', function (Blueprint $table) { + $table->dropColumn('uuid'); + $table->dropColumn('conversions_disk'); + }); + } +} diff --git a/database/migrations/2020_09_26_100951_create_user_settings_table.php b/database/migrations/2020_09_26_100951_create_user_settings_table.php new file mode 100644 index 00000000..d59beffc --- /dev/null +++ b/database/migrations/2020_09_26_100951_create_user_settings_table.php @@ -0,0 +1,35 @@ +id(); + $table->string('key'); + $table->text('value'); + $table->integer('user_id')->unsigned(); + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_settings'); + } +} diff --git a/database/migrations/2020_10_01_102913_add_company_to_addresses_table.php b/database/migrations/2020_10_01_102913_add_company_to_addresses_table.php new file mode 100644 index 00000000..570fe919 --- /dev/null +++ b/database/migrations/2020_10_01_102913_add_company_to_addresses_table.php @@ -0,0 +1,34 @@ +integer('user_id')->unsigned()->nullable()->change(); + $table->unsignedInteger('company_id')->nullable(); + $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('addresses', function (Blueprint $table) { + $table->dropForeign(['company_id']); + }); + } +} diff --git a/database/migrations/2020_10_17_074745_create_notes_table.php b/database/migrations/2020_10_17_074745_create_notes_table.php new file mode 100644 index 00000000..84888bb1 --- /dev/null +++ b/database/migrations/2020_10_17_074745_create_notes_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('type'); + $table->string('name'); + $table->text('notes'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('notes'); + } +} diff --git a/database/migrations/2020_10_24_091934_change_value_column_to_text_on_company_settings_table.php b/database/migrations/2020_10_24_091934_change_value_column_to_text_on_company_settings_table.php new file mode 100644 index 00000000..9b0f1c10 --- /dev/null +++ b/database/migrations/2020_10_24_091934_change_value_column_to_text_on_company_settings_table.php @@ -0,0 +1,32 @@ +text('value')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('company_settings', function (Blueprint $table) { + $table->string('value')->change(); + }); + } +} diff --git a/database/migrations/2020_11_23_050206_add_creator_in_invoices_table.php b/database/migrations/2020_11_23_050206_add_creator_in_invoices_table.php new file mode 100644 index 00000000..81fd5906 --- /dev/null +++ b/database/migrations/2020_11_23_050206_add_creator_in_invoices_table.php @@ -0,0 +1,33 @@ +unsignedInteger('creator_id')->nullable(); + $table->foreign('creator_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('invoices', function (Blueprint $table) { + $table->dropForeign(['creator_id']); + }); + } +} diff --git a/database/migrations/2020_11_23_050252_add_creator_in_estimates_table.php b/database/migrations/2020_11_23_050252_add_creator_in_estimates_table.php new file mode 100644 index 00000000..59263bb2 --- /dev/null +++ b/database/migrations/2020_11_23_050252_add_creator_in_estimates_table.php @@ -0,0 +1,33 @@ +unsignedInteger('creator_id')->nullable(); + $table->foreign('creator_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('estimates', function (Blueprint $table) { + $table->dropForeign(['creator_id']); + }); + } +} diff --git a/database/migrations/2020_11_23_050316_add_creator_in_payments_table.php b/database/migrations/2020_11_23_050316_add_creator_in_payments_table.php new file mode 100644 index 00000000..e16cc469 --- /dev/null +++ b/database/migrations/2020_11_23_050316_add_creator_in_payments_table.php @@ -0,0 +1,33 @@ +unsignedInteger('creator_id')->nullable(); + $table->foreign('creator_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('payments', function (Blueprint $table) { + $table->dropForeign(['creator_id']); + }); + } +} diff --git a/database/migrations/2020_11_23_050333_add_creator_in_expenses_table.php b/database/migrations/2020_11_23_050333_add_creator_in_expenses_table.php new file mode 100644 index 00000000..02e0fd5a --- /dev/null +++ b/database/migrations/2020_11_23_050333_add_creator_in_expenses_table.php @@ -0,0 +1,33 @@ +unsignedInteger('creator_id')->nullable(); + $table->foreign('creator_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('expenses', function (Blueprint $table) { + $table->dropForeign(['creator_id']); + }); + } +} diff --git a/database/migrations/2020_11_23_050406_add_creator_in_items_table.php b/database/migrations/2020_11_23_050406_add_creator_in_items_table.php new file mode 100644 index 00000000..5d1a8b81 --- /dev/null +++ b/database/migrations/2020_11_23_050406_add_creator_in_items_table.php @@ -0,0 +1,33 @@ +unsignedInteger('creator_id')->nullable(); + $table->foreign('creator_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('items', function (Blueprint $table) { + $table->dropForeign(['creator_id']); + }); + } +} diff --git a/database/migrations/2020_11_23_065815_add_creator_in_users_table.php b/database/migrations/2020_11_23_065815_add_creator_in_users_table.php new file mode 100644 index 00000000..15797a10 --- /dev/null +++ b/database/migrations/2020_11_23_065815_add_creator_in_users_table.php @@ -0,0 +1,33 @@ +unsignedInteger('creator_id')->nullable(); + $table->foreign('creator_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropForeign(['creator_id']); + }); + } +} diff --git a/database/migrations/2020_11_23_074154_create_email_logs_table.php b/database/migrations/2020_11_23_074154_create_email_logs_table.php new file mode 100644 index 00000000..89923cfb --- /dev/null +++ b/database/migrations/2020_11_23_074154_create_email_logs_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('from'); + $table->string('to'); + $table->string('subject'); + $table->text('body'); + $table->string('mailable_type'); + $table->string('mailable_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('email_logs'); + } +} diff --git a/database/migrations/2020_12_02_064933_update_crater_version_320.php b/database/migrations/2020_12_02_064933_update_crater_version_320.php index 24a7d5b5..f14cd7e8 100644 --- a/database/migrations/2020_12_02_064933_update_crater_version_320.php +++ b/database/migrations/2020_12_02_064933_update_crater_version_320.php @@ -3,7 +3,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -use Crater\Setting; +use Crater\Models\Setting; class UpdateCraterVersion320 extends Migration { diff --git a/database/migrations/2020_12_02_090527_update_crater_version_400.php b/database/migrations/2020_12_02_090527_update_crater_version_400.php new file mode 100644 index 00000000..804ad6d8 --- /dev/null +++ b/database/migrations/2020_12_02_090527_update_crater_version_400.php @@ -0,0 +1,138 @@ +fileDiskSeed(); + + Setting::setSetting('version', '4.0.0'); + + $user = User::where('role', 'admin')->first(); + + if ($user && $user->role == 'admin') { + $user->update([ + 'role' => 'super admin' + ]); + + // Update language + $user->setSettings(['language' => CompanySetting::getSetting('language', $user->company_id)]); + + // Update user's addresses + if ($user->addresses()->exists()) { + foreach ($user->addresses as $address) { + $address->company_id = $user->company_id; + $address->user_id = null; + $address->save(); + } + } + + // Update company settings + $this->updateCompanySettings($user); + + // Update Creator + $this->updateCreatorId($user); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } + + private function fileDiskSeed() + { + $privateDisk = [ + 'root' => config('filesystems.disks.local.root'), + 'driver' => 'local', + ]; + + $publicDisk = [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL') . '/storage', + 'visibility' => 'public', + ]; + + FileDisk::create([ + 'credentials' => json_encode($publicDisk), + 'name'=> 'local_public', + 'type'=> 'SYSTEM', + 'driver' => 'local', + 'set_as_default' => false, + ]); + + FileDisk::create([ + 'credentials' => json_encode($privateDisk), + 'name'=> 'local_private', + 'type'=> 'SYSTEM', + 'driver' => 'local', + 'set_as_default' => true, + ]); + } + + private function updateCreatorId($user) + { + Invoice::where('company_id', '<>', null)->update(['creator_id' => $user->id]); + Estimate::where('company_id', '<>', null)->update(['creator_id' => $user->id]); + Expense::where('company_id', '<>', null)->update(['creator_id' => $user->id]); + Payment::where('company_id', '<>', null)->update(['creator_id' => $user->id]); + Item::where('company_id', '<>', null)->update(['creator_id' => $user->id]); + User::where('role', 'customer')->update(['creator_id' => $user->id]); + } + + private function updateCompanySettings($user) + { + $defaultInvoiceEmailBody = 'You have received a new invoice from {COMPANY_NAME}.
Please download using the button below:'; + $defaultEstimateEmailBody = 'You have received a new estimate from {COMPANY_NAME}.
Please download using the button below:'; + $defaultPaymentEmailBody = 'Thank you for the payment.
Please download your payment receipt using the button below:'; + $billingAddressFormat = '

{BILLING_ADDRESS_NAME}

{BILLING_ADDRESS_STREET_1}

{BILLING_ADDRESS_STREET_2}

{BILLING_CITY} {BILLING_STATE}

{BILLING_COUNTRY} {BILLING_ZIP_CODE}

{BILLING_PHONE}

'; + $shippingAddressFormat = '

{SHIPPING_ADDRESS_NAME}

{SHIPPING_ADDRESS_STREET_1}

{SHIPPING_ADDRESS_STREET_2}

{SHIPPING_CITY} {SHIPPING_STATE}

{SHIPPING_COUNTRY} {SHIPPING_ZIP_CODE}

{SHIPPING_PHONE}

'; + $companyAddressFormat = '

{COMPANY_NAME}

{COMPANY_ADDRESS_STREET_1}

{COMPANY_ADDRESS_STREET_2}

{COMPANY_CITY} {COMPANY_STATE}

{COMPANY_COUNTRY} {COMPANY_ZIP_CODE}

{COMPANY_PHONE}

'; + $paymentFromCustomerAddress = '

{BILLING_ADDRESS_NAME}

{BILLING_ADDRESS_STREET_1}

{BILLING_ADDRESS_STREET_2}

{BILLING_CITY} {BILLING_STATE} {BILLING_ZIP_CODE}

{BILLING_COUNTRY}

{BILLING_PHONE}

'; + + $settings = [ + 'invoice_auto_generate' => 'YES', + 'payment_auto_generate' => 'YES', + 'estimate_auto_generate' => 'YES', + 'save_pdf_to_disk' => 'NO', + 'invoice_mail_body' => $defaultInvoiceEmailBody, + 'estimate_mail_body' => $defaultEstimateEmailBody, + 'payment_mail_body' => $defaultPaymentEmailBody, + 'invoice_company_address_format' => $companyAddressFormat, + 'invoice_shipping_address_format' => $shippingAddressFormat, + 'invoice_billing_address_format' => $billingAddressFormat, + 'estimate_company_address_format' => $companyAddressFormat, + 'estimate_shipping_address_format' => $shippingAddressFormat, + 'estimate_billing_address_format' => $billingAddressFormat, + 'payment_company_address_format' => $companyAddressFormat, + 'payment_from_customer_address_format' => $paymentFromCustomerAddress + ]; + + CompanySetting::setSettings($settings, $user->company_id); + } +} diff --git a/database/seeds/CountriesTableSeeder.php b/database/seeders/CountriesTableSeeder.php similarity index 99% rename from database/seeds/CountriesTableSeeder.php rename to database/seeders/CountriesTableSeeder.php index ed23800a..f1f4d222 100755 --- a/database/seeds/CountriesTableSeeder.php +++ b/database/seeders/CountriesTableSeeder.php @@ -1,6 +1,9 @@ call(UsersTableSeeder::class); $this->call(CurrenciesTableSeeder::class); - $this->call(RoleSeeder::class); + $this->call(DefaultSettingsSeeder::class); $this->call(CountriesTableSeeder::class); $this->call(EstimateTemplateSeeder::class); $this->call(InvoiceTemplateSeeder::class); + $this->call(PaymentMethodSeeder::class); + $this->call(UnitSeeder::class); } } diff --git a/database/seeders/DefaultSettingsSeeder.php b/database/seeders/DefaultSettingsSeeder.php new file mode 100644 index 00000000..403e7811 --- /dev/null +++ b/database/seeders/DefaultSettingsSeeder.php @@ -0,0 +1,44 @@ +first(); + + $settings = [ + 'currency' => 1, + 'time_zone' => 'Asia/Kolkata', + 'language' => 'en', + 'fiscal_year' => '1-12', + 'carbon_date_format' => 'Y/m/d', + 'moment_date_format' => 'YYYY/MM/DD', + 'notification_email' => 'noreply@crater.in', + 'notify_invoice_viewed' => 'NO', + 'notify_estimate_viewed' => 'NO', + 'tax_per_item' => 'NO', + 'discount_per_item' => 'NO', + 'invoice_auto_generate' => 'YES', + 'invoice_prefix' => 'INV', + 'estimate_prefix' => 'EST', + 'estimate_auto_generate' => 'YES', + 'payment_prefix' => 'PAY', + 'payment_auto_generate' => 'YES', + 'save_pdf_to_disk' => 'NO', + ]; + + CompanySetting::setSettings($settings, $user->company_id); + } +} diff --git a/database/seeders/DemoSeeder.php b/database/seeders/DemoSeeder.php new file mode 100644 index 00000000..1c83a468 --- /dev/null +++ b/database/seeders/DemoSeeder.php @@ -0,0 +1,29 @@ +first(); + + $user->setSettings(['language' => 'en']); + + Address::create(['company_id' => $user->company_id, 'country_id' => 1]); + + Setting::setSetting('profile_complete', 'COMPLETED'); + + \Storage::disk('local')->put('database_created', 'database_created'); + } +} diff --git a/database/seeds/EstimateTemplateSeeder.php b/database/seeders/EstimateTemplateSeeder.php similarity index 91% rename from database/seeds/EstimateTemplateSeeder.php rename to database/seeders/EstimateTemplateSeeder.php index 31dcb16f..1490c0ba 100644 --- a/database/seeds/EstimateTemplateSeeder.php +++ b/database/seeders/EstimateTemplateSeeder.php @@ -1,7 +1,9 @@ 'admin@craterapp.com', + 'name' => 'Jane Doe', + 'role' => 'super admin', + 'password' => 'crater@123' + ]); + + $company = Company::create([ + 'name' => 'xyz', + 'unique_hash' => str_random(20) + ]); + + $user->company_id = $company->id; + $user->save(); + + Setting::setSetting('profile_complete', 0); + } +} diff --git a/database/seeds/RoleSeeder.php b/database/seeds/RoleSeeder.php deleted file mode 100644 index b48bbdc8..00000000 --- a/database/seeds/RoleSeeder.php +++ /dev/null @@ -1,19 +0,0 @@ - 'admin']); - Role::create(['name' => 'contact']); - Role::create(['name' => 'staff']); - } -} diff --git a/database/seeds/SettingsSeeder.php b/database/seeds/SettingsSeeder.php deleted file mode 100644 index 2f01ce75..00000000 --- a/database/seeds/SettingsSeeder.php +++ /dev/null @@ -1,44 +0,0 @@ - 'TEST', 'unique_hash' => str_random(60)]); - - $user = User::find(1); - $user->company_id = $company->id; - $user->save(); - - $address = Address::create(['user_id' => $user->id, 'country_id' => 1]); - - $sets = [ - 'currency' => 1, - 'time_zone' => 'UTC', - 'language' => 'en', - 'notification_email' => $user->email, - 'fiscal_year' => '1-12', - 'carbon_date_format' => 'd m Y', - 'moment_date_format' => 'DD MMM YYYY' - ]; - - foreach ($sets as $key => $value) { - CompanySetting::setSetting( - $key, - $value, - $company->id - ); - } - } -} diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php deleted file mode 100644 index e577ae66..00000000 --- a/database/seeds/UsersTableSeeder.php +++ /dev/null @@ -1,26 +0,0 @@ - 'admin@craterapp.com', - 'name' => 'Jane Doe', - 'role' => 'admin', - 'password' => Hash::make('crater@123') - ]); - - Setting::setSetting('profile_complete', 0); - } -} diff --git a/docker-compose/setup.sh b/docker-compose/setup.sh index 8733a1c0..a7ce3137 100755 --- a/docker-compose/setup.sh +++ b/docker-compose/setup.sh @@ -4,4 +4,3 @@ docker-compose exec app composer install --no-interaction --prefer-dist --optimi docker-compose exec app php artisan storage:link || true docker-compose exec app php artisan key:generate -docker-compose exec app php artisan passport:keys || true \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 262a227d..c8c1a9e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,135 +11,153 @@ "@babel/highlight": "7.0.0-beta.44" } }, + "@babel/compat-data": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true + }, "@babel/core": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", - "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.4", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.4", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.3", - "@babel/types": "^7.6.3", - "convert-source-map": "^1.1.0", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" } }, "js-tokens": { @@ -149,25 +167,34 @@ "dev": true }, "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -182,171 +209,166 @@ "lodash": "^4.2.0", "source-map": "^0.5.0", "trim-right": "^1.0.1" + }, + "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 + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", - "dev": true, - "requires": { - "@babel/types": "^7.6.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, - "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "js-tokens": { @@ -355,225 +377,148 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/types": "^7.12.1" }, "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", - "dev": true, - "requires": { - "@babel/types": "^7.6.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, - "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -598,436 +543,426 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "dev": true, "requires": { - "@babel/types": "^7.5.5" + "@babel/types": "^7.12.1" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } } } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" }, "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", - "dev": true, - "requires": { - "@babel/types": "^7.6.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, - "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" } }, "js-tokens": { @@ -1041,66 +976,65 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/types": "^7.12.1" }, "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true } } }, @@ -1113,125 +1047,147 @@ "@babel/types": "7.0.0-beta.44" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" } }, "js-tokens": { @@ -1245,127 +1201,152 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/helpers": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", - "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", - "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.6.3", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", - "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" } }, "js-tokens": { @@ -1379,6 +1360,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -1391,849 +1387,912 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^3.0.0" - } - }, - "@babel/parser": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", - "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", - "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "has-flag": "^3.0.0" } } } }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "@babel/parser": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", - "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.11.0" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", - "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", - "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", - "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", - "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", - "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "dev": true, "requires": { - "regexpu-core": "^4.6.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - }, - "dependencies": { - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", - "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", + "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", "resolve": "^1.8.1", "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", - "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", - "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.3", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", "semver": "^5.5.0" }, "dependencies": { "@babel/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", - "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } - }, - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "dependencies": { + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } } } }, "@babel/runtime": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", - "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { @@ -2277,45 +2336,67 @@ "to-fast-properties": "^2.0.0" } }, - "@fortawesome/fontawesome-common-types": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.25.tgz", - "integrity": "sha512-3RuZPDuuPELd7RXtUqTCfed14fcny9UiPOkdr2i+cYxBoTOfQgxcDoq77fHiiHcgWuo1LoBUpvGxFF1H/y7s3Q==" - }, - "@fortawesome/fontawesome-free": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz", - "integrity": "sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ==" - }, - "@fortawesome/fontawesome-svg-core": { - "version": "1.2.25", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.25.tgz", - "integrity": "sha512-MotKnn53JKqbkLQiwcZSBJVYtTgIKFbh7B8+kd05TSnfKYPFmjKKI59o2fpz5t0Hzl35vVGU6+N4twoOpZUrqA==", + "@bytefury/spacewind": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@bytefury/spacewind/-/spacewind-0.3.3.tgz", + "integrity": "sha512-+cnkRVSXkNdpIl/oBBSSJqgeqiGDd4OTONb0RclEx2H0SbweJ4bHBtbgFiAo8jHqWt08ArRFm2RLf6zDG/hmPw==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.25" + "@popperjs/core": "^2.5.3", + "core-js": "^3.6.5", + "lodash": "^4.17.19", + "moment": "^2.27.0", + "tailwindcss": "^1.8.10", + "tiptap": "^1.29.6", + "tiptap-extensions": "^1.32.7", + "v-money": "^0.8.1", + "vue": "^2.6.11", + "vue-avatar-cropper": "^1.0.7", + "vue-flatpickr-component": "^8.1.6", + "vue-outside-events": "^1.1.3", + "vue2-dropzone": "^3.6.0" } }, - "@fortawesome/free-regular-svg-icons": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.11.2.tgz", - "integrity": "sha512-k0vbThRv9AvnXYBWi1gn1rFW4X7co/aFkbm0ZNmAR5PoWb9vY9EDDDobg8Ay4ISaXtCPypvJ0W1FWkSpLQwZ6w==", + "@fullhuman/postcss-purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-2.3.0.tgz", + "integrity": "sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.25" + "postcss": "7.0.32", + "purgecss": "^2.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + } } }, - "@fortawesome/free-solid-svg-icons": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.11.2.tgz", - "integrity": "sha512-zBue4i0PAZJUXOmLBBvM7L0O7wmsDC8dFv9IhpW5QL4kT9xhhVUsYg/LX1+5KaukWq4/cbDcKT+RT1aRe543sg==", - "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.25" - } - }, - "@fortawesome/vue-fontawesome": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.7.tgz", - "integrity": "sha512-YCw2Q2m4fxzyFsPOH3uDYMoJztTD+pT+AAyse4LFpbdrBg+r8ueaVT8BFnXEjrGwMDJJeXrwJ5AOC6q/JWBI4w==" - }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -2332,23 +2413,27 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true + "@popperjs/core": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.5.4.tgz", + "integrity": "sha512-ZpKr+WTb8zsajqgDkvCEWgp6d5eJT6Q63Ng2neTbzBO76Lbe91vX/iVIW9dikq+Fs3yEo+ls4cxeXABD2LtcbQ==" }, "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -2356,258 +2441,236 @@ "dev": true }, "@types/node": { - "version": "12.7.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz", - "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==", + "version": "14.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", + "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", "dev": true }, "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, + "@vue-hero-icons/outline": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@vue-hero-icons/outline/-/outline-1.6.3.tgz", + "integrity": "sha512-vyWDAnT3U8aU1spQvaeHnkysc8IWQNdptRmyX6MCd3cHPNHHd3Jzg1svpwQd/cyJ13zPtiSLU+zW8i3jNcvcKA==", + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "heroicons": "git+https://github.com/refactoringui/heroicons.git#master" + } + }, + "@vue-hero-icons/solid": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@vue-hero-icons/solid/-/solid-1.6.3.tgz", + "integrity": "sha512-56sjwEqWXrjqmV/8V4E7C3M7pAynJ6jm692cLGeM8dcW950T9CcJ+HxgFLCzZE/+G/yLi+uAxf/Buu2c03QNyQ==", + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "heroicons": "git+https://github.com/refactoringui/heroicons.git#master" + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==" + }, "@vue/component-compiler-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.0.0.tgz", - "integrity": "sha512-am+04/0UX7ektcmvhYmrf84BDVAD8afFOf4asZjN84q8xzxFclbk5x0MtxuKGfp+zjN5WWPJn3fjFAWtDdIGSw==", - "dev": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", + "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", "requires": { "consolidate": "^0.15.1", "hash-sum": "^1.0.2", "lru-cache": "^4.1.2", "merge-source-map": "^1.1.0", "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0", - "prettier": "1.16.3", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", "source-map": "~0.6.1", "vue-template-es2015-compiler": "^1.9.0" }, "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, "prettier": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", - "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "optional": true } } }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -2634,10 +2697,9 @@ } }, "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-jsx": { "version": "3.0.1", @@ -2656,6 +2718,21 @@ } } }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, "adjust-sourcemap-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", @@ -2684,17 +2761,28 @@ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", "dev": true }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", - "dev": true + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } }, "util": { "version": "0.10.3", @@ -2707,6 +2795,16 @@ } } }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -2765,26 +2863,8 @@ "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.0" - }, - "dependencies": { - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - } } }, "anymatch": { @@ -2881,14 +2961,23 @@ "dev": true }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "assert": { @@ -2931,10 +3020,13 @@ "dev": true }, "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } }, "async-each": { "version": "1.0.3", @@ -2955,26 +3047,25 @@ "dev": true }, "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" } }, "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" + "follow-redirects": "1.5.10" } }, "babel-code-frame": { @@ -3030,22 +3121,46 @@ } }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } } } }, @@ -3061,9 +3176,9 @@ } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -3078,8 +3193,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -3151,8 +3265,7 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "binary-extensions": { "version": "1.13.1", @@ -3160,16 +3273,25 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", - "dev": true + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", "dev": true }, "body-parser": { @@ -3198,49 +3320,6 @@ "requires": { "ms": "2.0.0" } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true } } }, @@ -3264,16 +3343,10 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "bootstrap": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", - "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3305,6 +3378,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -3359,21 +3438,50 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "browserify-zlib": { @@ -3386,32 +3494,25 @@ } }, "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, + "version": "4.14.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.6.tgz", + "integrity": "sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A==", "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "caniuse-lite": "^1.0.30001154", + "electron-to-chromium": "^1.3.585", + "escalade": "^3.1.1", + "node-releases": "^1.1.65" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } } }, "buffer-from": { @@ -3441,30 +3542,32 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" }, "dependencies": { "lru-cache": { @@ -3476,11 +3579,14 @@ "yallist": "^3.0.2" } }, - "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 + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } }, "yallist": { "version": "3.1.1", @@ -3507,6 +3613,16 @@ "unset-value": "^1.0.0" } }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -3555,39 +3671,65 @@ "upper-case": "^1.1.1" } }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000995", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000995.tgz", - "integrity": "sha512-25ew/vPIVU0g/OjeZay2IfcljWAmNVy1TSmeoozFrJzEOqnka0ZSusJFS+4iGZKVIJ4RHOZB4NyilpwNcsh8tA==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, "caniuse-lite": { - "version": "1.0.30000999", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", - "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==", - "dev": true + "version": "1.0.30001156", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001156.tgz", + "integrity": "sha512-z7qztybA2eFZTB6Z3yvaQBIoJpQtsewRD74adw2UbRWwsRq3jIPvgrQGawBMbfafekQaD21FWuXNcywtTDGGCw==" }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "chardet": { @@ -3603,21 +3745,21 @@ "dev": true }, "chart.js": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.8.0.tgz", - "integrity": "sha512-Di3wUL4BFvqI5FB5K26aQ+hvWh8wnP9A3DWGvXHVkO13D3DSnaSsdZx29cXlEsYKVkn1E2az+ZYFS4t0zi8x0w==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", + "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", "requires": { "chartjs-color": "^2.1.0", "moment": "^2.10.2" } }, "chartjs-color": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.3.0.tgz", - "integrity": "sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", + "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", "requires": { "chartjs-color-string": "^0.6.0", - "color-convert": "^0.5.3" + "color-convert": "^1.9.3" } }, "chartjs-color-string": { @@ -3649,9 +3791,9 @@ } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { @@ -3679,42 +3821,6 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "^1.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -3739,22 +3845,20 @@ } }, "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dev": true, "requires": { "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -3765,16 +3869,49 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } }, "clone-deep": { "version": "4.0.1", @@ -3793,25 +3930,10 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "collect.js": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.18.1.tgz", - "integrity": "sha512-x9aS42Dpyqk5McLVtOtlvLV4yi8BEPbZNAAQsduucC8nlsgdcDjh8fDEcRfyXOyY5UZMRj0LRCstRtSGrW9M0g==", + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.28.4.tgz", + "integrity": "sha512-NJXATt6r+gtGOgDJOKLeooTY6QpGn8YQN/PkKnCmajJOguz/xGPgPrTyrBkmBBTHXnniPRIkUqjqt3AkjwCKlg==", "dev": true }, "collection-visit": { @@ -3825,74 +3947,45 @@ } }, "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - }, - "dependencies": { - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - } + "color-convert": "^1.9.1", + "color-string": "^1.5.4" } }, "color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", "requires": { - "color-name": "^1.0.0" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" }, "commondir": { "version": "1.0.1", @@ -3901,9 +3994,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "compose-function": { @@ -3916,12 +4009,12 @@ } }, "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { - "mime-db": ">= 1.40.0 < 2" + "mime-db": ">= 1.43.0 < 2" } }, "compression": { @@ -3956,11 +4049,27 @@ } } }, + "concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", + "dev": true, + "requires": { + "commander": "^2.9.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -3974,15 +4083,6 @@ "typedarray": "^0.0.6" } }, - "concatenate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/concatenate/-/concatenate-0.0.2.tgz", - "integrity": "sha1-C0nW6MQQR9dyjNyNYqCGYjOXtJ8=", - "dev": true, - "requires": { - "globs": "^0.1.2" - } - }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", @@ -3990,19 +4090,15 @@ "dev": true }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "consolidate": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, "requires": { "bluebird": "^3.1.1" } @@ -4029,14 +4125,20 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -4063,31 +4165,25 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "core-js": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", + "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==" + }, "core-js-compat": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.2.tgz", - "integrity": "sha512-gfiK4QnNXhnnHVOIZst2XHdFfdMTPxtR0EGs0TdILMlGIft+087oH6/Sw2xTTIjpWXC9vEwsJA8VG3XTGcmO5g==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "dev": true, "requires": { - "browserslist": "^4.7.0", - "semver": "^6.3.0" + "browserslist": "^4.14.6", + "semver": "7.0.0" }, "dependencies": { - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } @@ -4117,35 +4213,33 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } } } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "create-hash": { @@ -4232,14 +4326,6 @@ "source-map": "^0.6.1", "source-map-resolve": "^0.5.2", "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "css-color-names": { @@ -4256,66 +4342,16 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "css-loader": { - "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", - "css-selector-tokenizer": "^0.7.0", - "cssnano": "^3.10.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash.camelcase": "^4.3.0", - "object-assign": "^4.1.1", - "postcss": "^5.0.6", - "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", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" } }, "css-select": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", - "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^2.1.2", + "css-what": "^3.2.1", "domutils": "^1.7.0", "nth-check": "^1.0.2" } @@ -4327,83 +4363,40 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" } }, "css-tree": { - "version": "1.0.0-alpha.33", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.33.tgz", - "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==", + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, "requires": { "mdn-data": "2.0.4", - "source-map": "^0.5.3" + "source-map": "^0.6.1" } }, "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano-preset-default": { "version": "4.0.7", @@ -4443,17 +4436,6 @@ "postcss-unique-selectors": "^4.0.1" }, "dependencies": { - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -4466,6 +4448,17 @@ "lodash.uniq": "^4.5.0" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", @@ -4477,71 +4470,24 @@ "q": "^1.1.2" } }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.1.0.tgz", + "integrity": "sha512-h+6w/W1WqXaJA4tb1dk7r5tVbOm97MsKxzwnvOR04UQ6GILroryjMWu3pmCCtL2mLaEStQ0fZgeGiy99mo7iyg==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.29" + "css-tree": "^1.0.0" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0.tgz", + "integrity": "sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw==", "dev": true, "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" + "mdn-data": "2.0.12", + "source-map": "^0.6.1" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -4561,9 +4507,9 @@ } }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -4571,9 +4517,9 @@ } }, "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.12.tgz", + "integrity": "sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q==", "dev": true }, "normalize-url": { @@ -4582,27 +4528,15 @@ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true }, - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "dev": true, "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, "postcss-colormin": { @@ -4616,6 +4550,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-convert-values": { @@ -4626,6 +4568,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-discard-comments": { @@ -4674,6 +4624,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-merge-rules": { @@ -4691,12 +4649,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -4711,6 +4669,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-gradients": { @@ -4723,6 +4689,14 @@ "is-color-stop": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-params": { @@ -4737,6 +4711,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-selectors": { @@ -4752,12 +4734,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -4783,6 +4765,14 @@ "normalize-url": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-ordered-values": { @@ -4794,6 +4784,14 @@ "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-reduce-initial": { @@ -4818,17 +4816,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-svgo": { @@ -4841,6 +4836,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-unique-selectors": { @@ -4854,33 +4857,27 @@ "uniqs": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, "svgo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.0.tgz", - "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "dev": true, "requires": { "chalk": "^2.4.1", "coa": "^2.0.2", "css-select": "^2.0.0", "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.33", - "csso": "^3.5.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", "js-yaml": "^3.13.1", "mkdirp": "~0.5.1", "object.values": "^1.1.0", @@ -4911,34 +4908,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "cssnano-util-same-parent": { @@ -4947,16 +4916,6 @@ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", "dev": true }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -4973,12 +4932,6 @@ "type": "^1.0.1" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -5006,9 +4959,9 @@ "dev": true }, "deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", - "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "dev": true, "requires": { "is-arguments": "^1.0.4", @@ -5094,8 +5047,7 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, "del": { "version": "4.1.1", @@ -5133,10 +5085,10 @@ } } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true } } @@ -5148,9 +5100,9 @@ "dev": true }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -5175,6 +5127,16 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -5184,6 +5146,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "dir-glob": { @@ -5194,23 +5164,6 @@ "requires": { "arrify": "^1.0.1", "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "dns-equal": { @@ -5248,9 +5201,9 @@ } }, "dom-serializer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", - "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -5258,9 +5211,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", "dev": true } } @@ -5288,12 +5241,12 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { @@ -5309,9 +5262,9 @@ "dev": true }, "dropzone": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.5.1.tgz", - "integrity": "sha512-3VduRWLxx9hbVr42QieQN25mx/I61/mRdUSuxAmDGdDqZIN8qtP7tcKMa3KfpJjuGjOJGYYUzzeq6eGDnkzesA==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.7.2.tgz", + "integrity": "sha512-m217bJHtf0J1IiKn4Tv6mnu1h5QvQNBnKZ39gma7hzGQhIZMxYq1vYEHs4AVd4ThFwmALys+52NAOD4zdLTG4w==" }, "duplexify": { "version": "3.7.1", @@ -5332,15 +5285,14 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.261", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.261.tgz", - "integrity": "sha512-nA9xFj1SgHXlW/6T4+udW2u/Ic/bne25UoFsddoNM7Ut2bgNGLLQUhLhk+vQlbKh9WiRgDDlHaC36Oy7AgRR9w==", - "dev": true + "version": "1.3.591", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.591.tgz", + "integrity": "sha512-ol/0WzjL4NS4Kqy9VD6xXQON91xIihDT36sYCew/G/bnd1v0/4D+kahp26JauQhgFUjrdva3kRSo7URcUmQ+qw==" }, "elliptic": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -5350,6 +5302,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "emoji-regex": { @@ -5359,10 +5319,9 @@ "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, "encodeurl": { "version": "1.0.2", @@ -5380,9 +5339,9 @@ } }, "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -5403,9 +5362,9 @@ } }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", "dev": true }, "errno": { @@ -5424,39 +5383,48 @@ "dev": true, "requires": { "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + } } }, "error-stack-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz", - "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", "dev": true, "requires": { - "stackframe": "^1.1.0" + "stackframe": "^1.1.1" } }, "es-abstract": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", - "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.0.0", - "string.prototype.trimright": "^2.0.0" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -5465,14 +5433,14 @@ } }, "es5-ext": { - "version": "0.10.51", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", - "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "dev": true, "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -5492,13 +5460,13 @@ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" }, "es6-symbol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", - "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "requires": { "d": "^1.0.1", - "es5-ext": "^0.10.51" + "ext": "^1.1.2" } }, "es6-templates": { @@ -5511,6 +5479,11 @@ "through": "~2.3.6" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5520,8 +5493,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { "version": "4.19.1", @@ -5575,6 +5547,17 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -5593,9 +5576,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -5610,97 +5593,44 @@ "requires": { "ansi-regex": "^3.0.0" } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "eslint-config-prettier": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz", - "integrity": "sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", "dev": true, "requires": { "get-stdin": "^6.0.0" } }, "eslint-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", - "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.4.tgz", + "integrity": "sha512-I496aBd+Hi23Y0Cx+sKvw+VwlJre4ScIRlkrvTO6Scq68X/UXbN6F3lAhN8b0Zv8atAyprkyrA42K5QBJtCyaw==", "dev": true, "requires": { "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", + "loader-fs-cache": "^1.0.3", "loader-utils": "^1.2.3", - "object-hash": "^2.0.1", - "schema-utils": "^2.6.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } + "object-hash": "^2.0.3", + "schema-utils": "^2.6.5" } }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -5726,9 +5656,9 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { @@ -5739,38 +5669,48 @@ "requires": { "acorn": "^5.5.0", "acorn-jsx": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + } } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, "esquery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", - "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^5.0.0" + "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", - "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { @@ -5791,10 +5731,16 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "eventsource": { @@ -5872,6 +5818,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -5928,12 +5880,6 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5942,79 +5888,22 @@ "requires": { "ms": "2.0.0" } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", "dev": true } } @@ -6027,17 +5916,6 @@ "requires": { "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" - } - } } }, "external-editor": { @@ -6113,6 +5991,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -6128,13 +6012,44 @@ "webpack-sources": "^1.1.0" }, "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "lodash": "^4.17.14" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" } } } @@ -6166,9 +6081,9 @@ } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -6183,6 +6098,14 @@ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, + "fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "requires": { + "format": "^0.2.0" + } + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -6193,9 +6116,9 @@ } }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { @@ -6228,27 +6151,27 @@ }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -6276,6 +6199,13 @@ "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -6296,78 +6226,50 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "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" + } } } }, "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" } }, "find-up": { @@ -6404,11 +6306,10 @@ "write": "^0.2.1" } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true + "flatpickr": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.6.tgz", + "integrity": "sha512-EZ48CJMttMg3maMhJoX+GvTuuEhX/RbA1YeuI19attP3pwBdbYy6+yqAEVm0o0hSBFYBiLbVxscLW6gJXq6H3A==" }, "flush-write-stream": { "version": "1.1.1", @@ -6434,6 +6335,11 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -6466,12 +6372,6 @@ "string-width": "^2.0.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 - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -6491,33 +6391,6 @@ "supports-color": "^2.0.0" } }, - "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 - }, - "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" - }, - "dependencies": { - "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": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -6536,6 +6409,25 @@ "readable-stream": "^2.0.0" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -6551,628 +6443,23 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "resolved": false, - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": false, - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": false, - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "resolved": false, - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "resolved": false, - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "resolved": false, - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "resolved": false, - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "resolved": false, - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": false, - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": false, - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": false, - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": false, - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "resolved": false, - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "resolved": false, - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "resolved": false, - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true - } + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -7180,12 +6467,29 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -7208,10 +6512,9 @@ "dev": true }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7312,20 +6615,10 @@ } } }, - "globs": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globs/-/globs-0.1.4.tgz", - "integrity": "sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ==", - "dev": true, - "requires": { - "glob": "^7.1.1" - } - }, "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "growly": { "version": "1.3.0", @@ -7339,16 +6632,15 @@ "integrity": "sha1-kTfFKxhffeEkkLm+vMFmC5Al/gw=" }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -7365,13 +6657,12 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -7395,12 +6686,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -7413,20 +6698,39 @@ } }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" }, "hash.js": { "version": "1.1.7", @@ -7444,12 +6748,21 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "heroicons": { + "version": "git+https://github.com/refactoringui/heroicons.git#1cef5f13f97bddbbdbf04e352099cecca52d754d", + "from": "git+https://github.com/refactoringui/heroicons.git#master" + }, "hex-color-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", "dev": true }, + "highlight.js": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.0.tgz", + "integrity": "sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -7501,9 +6814,9 @@ "dev": true }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", "dev": true }, "html-loader": { @@ -7542,6 +6855,11 @@ } } }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==" + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -7549,31 +6867,36 @@ "dev": true }, "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { "depd": "~1.1.2", - "inherits": "2.0.4", + "inherits": "2.0.3", "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" }, "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true } } }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "dev": true + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } }, "http-proxy-middleware": { "version": "0.19.1", @@ -7585,25 +6908,6 @@ "is-glob": "^4.0.0", "lodash": "^4.17.11", "micromatch": "^3.1.10" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true - }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - } } }, "https-browserify": { @@ -7636,6 +6940,17 @@ "postcss": "^6.0.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -7647,18 +6962,21 @@ "supports-color": "^5.4.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "iferr": { @@ -7703,19 +7021,13 @@ "dev": true } } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true } } }, "img-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-3.0.1.tgz", - "integrity": "sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-3.0.2.tgz", + "integrity": "sha512-rSriLKgvi85Km7ppSF+AEAM3nU4fxpvCkaXtC/IoCEU7jfks55bEANFs0bB9YXYkxY9JurZQIZFtXh5Gue3upw==", "dev": true, "requires": { "loader-utils": "^1.1.0" @@ -7793,46 +7105,6 @@ "locate-path": "^3.0.0" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -7850,11 +7122,16 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, "infer-owner": { "version": "1.0.4", @@ -7866,7 +7143,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -7875,8 +7151,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -7912,20 +7187,15 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "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 - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "strip-ansi": { @@ -7936,6 +7206,15 @@ "requires": { "ansi-regex": "^3.0.0" } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -7950,9 +7229,9 @@ } }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "invariant": { @@ -7977,9 +7256,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, "is-absolute-url": { @@ -7997,12 +7276,6 @@ "kind-of": "^3.0.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -8021,10 +7294,9 @@ "dev": true }, "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-binary-path": { "version": "1.0.1", @@ -8036,14 +7308,15 @@ } }, "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, "is-color-stop": { @@ -8060,6 +7333,14 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -8069,12 +7350,6 @@ "kind-of": "^3.0.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -8087,9 +7362,9 @@ } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { @@ -8118,10 +7393,13 @@ "dev": true }, "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "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" + } }, "is-extglob": { "version": "2.1.1", @@ -8130,13 +7408,10 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "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.1", @@ -8147,6 +7422,12 @@ "is-extglob": "^2.1.1" } }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -8156,12 +7437,6 @@ "kind-of": "^3.0.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -8174,9 +7449,9 @@ } }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, "is-path-cwd": { @@ -8203,12 +7478,6 @@ "path-is-inside": "^1.0.2" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -8218,19 +7487,13 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.1" + "has-symbols": "^1.0.1" } }, "is-resolvable": { @@ -8245,22 +7508,13 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-windows": { @@ -8275,6 +7529,12 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8287,22 +7547,37 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jquery": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" - }, - "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", - "dev": true - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" }, "js-tokens": { "version": "3.0.2", @@ -8310,16 +7585,6 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -8354,17 +7619,16 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, "requires": { "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" } }, "killable": { @@ -8374,15 +7638,15 @@ "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==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "laravel-mix": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.0.tgz", - "integrity": "sha512-QpsVoM6zGa83E5AUMwOmi4wKdYfJMaW1jIpJ1CCL74abOHj1ne25njBQ4detO41GAjIkZIkrmwECEcOebC8+3Q==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.9.tgz", + "integrity": "sha512-1WCJiHimTRW3KlxcabRTco0q+bo4uKPaFTkc6cJ/bLEq4JT1aPkojoauUK7+PyiIlDJncw0Nt2MtDrv5C6j5IQ==", "dev": true, "requires": { "@babel/core": "^7.2.0", @@ -8397,7 +7661,7 @@ "chokidar": "^2.0.3", "clean-css": "^4.1.3", "collect.js": "^4.12.8", - "concatenate": "0.0.2", + "concat": "^1.0.3", "css-loader": "^1.0.1", "dotenv": "^6.2.0", "dotenv-expand": "^4.2.0", @@ -8415,63 +7679,25 @@ "postcss-loader": "^3.0.0", "style-loader": "^0.23.1", "terser": "^3.11.0", - "terser-webpack-plugin": "^1.2.2", + "terser-webpack-plugin": "^2.2.3", "vue-loader": "^15.4.2", "webpack": "^4.36.1", "webpack-cli": "^3.1.2", "webpack-dev-server": "^3.1.14", "webpack-merge": "^4.1.0", "webpack-notifier": "^1.5.1", - "yargs": "^12.0.5" + "yargs": "^15.4.1" }, "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 - }, - "autoprefixer": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.5.tgz", - "integrity": "sha512-rGd50YV8LgwFQ2WQp4XzOTG69u1qQsXn0amww7tjqV5jJuNazgFKYEVItEBngyyvVITKOg20zr2V+9VsrXJQ2g==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "browserslist": "^4.7.0", - "caniuse-lite": "^1.0.30000999", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.18", - "postcss-value-parser": "^4.0.2" - } - }, - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "css-loader": { @@ -8492,43 +7718,6 @@ "postcss-modules-values": "^1.3.0", "postcss-value-parser": "^3.3.0", "source-list-map": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" } }, "fs-extra": { @@ -8542,173 +7731,31 @@ "universalify": "^0.1.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "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 - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "chalk": "^2.4.2", + "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "supports-color": "^5.4.0" } }, "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "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": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "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": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -8740,28 +7787,6 @@ "requires": { "find-cache-dir": "^0.1.1", "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } } }, "loader-runner": { @@ -8771,26 +7796,37 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash.memoize": { "version": "4.1.2", @@ -8798,6 +7834,11 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -8805,9 +7846,9 @@ "dev": true }, "loglevel": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", - "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", "dev": true }, "loose-envify": { @@ -8825,11 +7866,19 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, + "lowlight": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.17.0.tgz", + "integrity": "sha512-vmtBgYKD+QVNy7tIa7ulz5d//Il9R4MooOVh4nkOf9R9Cb/Dk5TXMSTieg/vDulkBkIWj59/BIlyFQxT9X1oAQ==", + "requires": { + "fault": "^1.0.0", + "highlight.js": "~10.4.0" + } + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -8843,29 +7892,6 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" } }, "map-cache": { @@ -8883,29 +7909,15 @@ "object-visit": "^1.0.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dev": true, "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - } + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, "md5.js": { @@ -8931,25 +7943,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -8970,23 +7963,20 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, "requires": { "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { @@ -9024,21 +8014,35 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "1.40.0" + "mime-db": "1.44.0" } }, "mimic-fn": { @@ -9063,16 +8067,58 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } }, "mississippi": { "version": "3.0.0", @@ -9100,32 +8146,21 @@ "requires": { "for-in": "^1.0.2", "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" - } - } } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "move-concurrently": { "version": "1.0.1", @@ -9169,9 +8204,9 @@ "dev": true }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true, "optional": true }, @@ -9207,9 +8242,9 @@ "dev": true }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "next-tick": { @@ -9233,10 +8268,18 @@ "lower-case": "^1.1.1" } }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "requires": { + "lodash.toarray": "^4.4.0" + } + }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, "node-libs-browser": { @@ -9292,21 +8335,9 @@ } }, "node-releases": { - "version": "1.1.35", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz", - "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==" }, "normalize-path": { "version": "3.0.0", @@ -9317,20 +8348,12 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" }, "npm-run-path": { "version": "2.0.2", @@ -9353,20 +8376,12 @@ "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" }, "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 + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -9388,12 +8403,6 @@ "is-descriptor": "^0.1.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -9408,20 +8417,45 @@ "object-hash": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", - "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==", - "dev": true + "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==" }, "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } }, "object-keys": { "version": "1.1.1", @@ -9429,6 +8463,12 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -9439,25 +8479,25 @@ } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.omit": { @@ -9467,17 +8507,6 @@ "dev": true, "requires": { "is-extendable": "^1.0.0" - }, - "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" - } - } } }, "object.pick": { @@ -9490,13 +8519,13 @@ } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } @@ -9526,7 +8555,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -9540,10 +8568,19 @@ "mimic-fn": "^1.0.0" } }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, "optimize-css-assets-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", "dev": true, "requires": { "cssnano": "^4.1.10", @@ -9561,32 +8598,6 @@ "is-resolvable": "^1.0.0", "postcss": "^7.0.0" } - }, - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -9604,6 +8615,11 @@ "word-wrap": "~1.2.3" } }, + "orderedmap": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-1.1.1.tgz", + "integrity": "sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ==" + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -9625,29 +8641,38 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "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": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-pipe": { "version": "1.2.0", @@ -9664,10 +8689,16 @@ "retry": "^0.12.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parallel-transform": { @@ -9691,19 +8722,28 @@ } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" } }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -9746,8 +8786,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -9764,8 +8803,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-to-regexp": { "version": "0.1.7", @@ -9773,10 +8811,27 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -9786,6 +8841,19 @@ "sha.js": "^2.4.8" } }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -9801,6 +8869,15 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", @@ -9808,29 +8885,35 @@ "dev": true }, "popper.js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", - "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" }, "portfinder": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz", - "integrity": "sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -9841,152 +8924,96 @@ "dev": true }, "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } } } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } } } }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, + "postcss-functions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz", + "integrity": "sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4=", "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" + "glob": "^7.1.2", + "object-assign": "^4.1.1", + "postcss": "^6.0.9", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "^5.0.16" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - } - }, - "postcss-filter-plugins": { + "postcss-js": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz", + "integrity": "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==", "requires": { - "postcss": "^5.0.4" + "camelcase-css": "^2.0.1", + "postcss": "^7.0.18" } }, "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "dev": true, "requires": { "cosmiconfig": "^5.0.0", @@ -10006,27 +9033,27 @@ }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -10035,17 +9062,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -10056,108 +9072,9 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.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.0.10", - "postcss-value-parser": "^3.1.1" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - } - }, "postcss-modules-extract-imports": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", @@ -10167,6 +9084,17 @@ "postcss": "^6.0.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -10178,11 +9106,14 @@ "supports-color": "^5.4.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10196,6 +9127,17 @@ "postcss": "^6.0.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -10207,11 +9149,14 @@ "supports-color": "^5.4.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10225,6 +9170,17 @@ "postcss": "^6.0.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -10236,11 +9192,14 @@ "supports-color": "^5.4.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10254,6 +9213,17 @@ "postcss": "^6.0.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -10265,21 +9235,24 @@ "supports-color": "^5.4.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, + "postcss-nested": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz", + "integrity": "sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==", "requires": { - "postcss": "^5.0.5" + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2" } }, "postcss-normalize-display-values": { @@ -10293,31 +9266,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -10333,31 +9286,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -10373,31 +9306,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -10412,31 +9325,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -10451,31 +9344,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -10490,57 +9363,14 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - } - }, "postcss-normalize-whitespace": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", @@ -10551,124 +9381,29 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - } - }, "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "requires": { - "flatten": "^1.0.2", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "prelude-ls": { "version": "1.1.2", @@ -10676,16 +9411,10 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "prettier": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz", - "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", "dev": true }, "prettier-linter-helpers": { @@ -10697,6 +9426,11 @@ "fast-diff": "^1.1.2" } }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -10732,14 +9466,142 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" }, + "prosemirror-collab": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.2.2.tgz", + "integrity": "sha512-tBnHKMLgy5Qmx9MYVcLfs3pAyjtcqYYDd9kp3y+LSiQzkhMQDfZSV3NXWe4Gsly32adSef173BvObwfoSQL5MA==", + "requires": { + "prosemirror-state": "^1.0.0" + } + }, + "prosemirror-commands": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.1.4.tgz", + "integrity": "sha512-kj4Qi+8h3EpJtZuuEDwZ9h2/QNGWDsIX/CzjmClxi9GhxWyBUMVUvIFk0mgdqHyX20lLeGmOpc0TLA5aPzgpWg==", + "requires": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "prosemirror-dropcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz", + "integrity": "sha512-4c94OUGyobGnwcQI70OXyMhE/9T4aTgjU+CHxkd5c7D+jH/J0mKM/lk+jneFVKt7+E4/M0D9HzRPifu8U28Thw==", + "requires": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "prosemirror-gapcursor": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz", + "integrity": "sha512-SjbUZq5pgsBDuV3hu8GqgIpZR5eZvGLM+gPQTqjVVYSMUCfKW3EGXTEYaLHEl1bGduwqNC95O3bZflgtAb4L6w==", + "requires": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "prosemirror-history": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.1.3.tgz", + "integrity": "sha512-zGDotijea+vnfnyyUGyiy1wfOQhf0B/b6zYcCouBV8yo6JmrE9X23M5q7Nf/nATywEZbgRLG70R4DmfSTC+gfg==", + "requires": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "rope-sequence": "^1.3.0" + } + }, + "prosemirror-inputrules": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz", + "integrity": "sha512-Ja5Z3BWestlHYGvtSGqyvxMeB8QEuBjlHM8YnKtLGUXMDp965qdDV4goV8lJb17kIWHk7e7JNj6Catuoa3302g==", + "requires": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "prosemirror-keymap": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz", + "integrity": "sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg==", + "requires": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "prosemirror-model": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.11.2.tgz", + "integrity": "sha512-+gM+x1VUfGAyKR/g0bK7FC46fVNq0xVVL859QAQ7my2p5HzKrPps/pSbYn7T50XTG2r2IhZJChsUFUBHtcoN0Q==", + "requires": { + "orderedmap": "^1.1.0" + } + }, + "prosemirror-schema-list": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.1.4.tgz", + "integrity": "sha512-pNTuZflacFOBlxrTcWSdWhjoB8BaucwfJVp/gJNxztOwaN3wQiC65axclXyplf6TKgXD/EkWfS/QAov3/Znadw==", + "requires": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "prosemirror-state": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.3.3.tgz", + "integrity": "sha512-PLXh2VJsIgvlgSTH6I2Yg6vk1CzPDp21DFreVpQtDMY2S6WaMmrQgDTLRcsrD8X38v8Yc873H7+ogdGzyIPn+w==", + "requires": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "prosemirror-tables": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.1.1.tgz", + "integrity": "sha512-LmCz4jrlqQZRsYRDzCRYf/pQ5CUcSOyqZlAj5kv67ZWBH1SVLP2U9WJEvQfimWgeRlIz0y0PQVqO1arRm1+woA==", + "requires": { + "prosemirror-keymap": "^1.1.2", + "prosemirror-model": "^1.8.1", + "prosemirror-state": "^1.3.1", + "prosemirror-transform": "^1.2.1", + "prosemirror-view": "^1.13.3" + } + }, + "prosemirror-transform": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.2.8.tgz", + "integrity": "sha512-hKqceqv9ZmMQXNQkhFjr0KFGPvkhygaWND+uIM0GxRpALrKfxP97SsgHTBs3OpJhDmh5N+mB4D/CksB291Eavg==", + "requires": { + "prosemirror-model": "^1.0.0" + } + }, + "prosemirror-utils": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz", + "integrity": "sha512-UC+j9hQQ1POYfMc5p7UFxBTptRiGPR7Kkmbl3jVvU8VgQbkI89tR/GK+3QYC8n+VvBZrtAoCrJItNhWSxX3slA==" + }, + "prosemirror-view": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.15.7.tgz", + "integrity": "sha512-fSSXphXg+82qb4xNsHT0mX6ro0Wu1/l+WIFO5jYfyjd42r6ZWSg0gFItLgqOVPxoKQOlrPJUhrozTxiqx0EXOg==", + "requires": { + "prosemirror-model": "^1.1.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -10751,8 +9613,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "public-encrypt": { "version": "4.0.3", @@ -10766,6 +9627,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "pump": { @@ -10807,21 +9676,60 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "requires": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + } + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -10836,9 +9744,9 @@ "dev": true }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, "randombytes": { @@ -10866,10 +9774,22 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -10879,14 +9799,6 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } } }, "readdirp": { @@ -10917,65 +9829,59 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true - } - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, - "reduce-function-call": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", - "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", - "dev": true, + "reduce-css-calc": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz", + "integrity": "sha512-fDnlZ+AybAS3C7Q9xDq5y8A2z+lT63zLbynew/lur/IR24OQF5x98tfNwf79mzEdfywZ0a2wpM860FhFfMxZlA==", "requires": { - "balanced-match": "^1.0.0" + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -10995,12 +9901,13 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "dev": true, "requires": { - "define-properties": "^1.1.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "regexpp": { @@ -11010,26 +9917,29 @@ "dev": true }, "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -11068,9 +9978,9 @@ "dev": true }, "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true }, "require-directory": { @@ -11080,9 +9990,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "require-uncached": { @@ -11102,11 +10012,11 @@ "dev": true }, "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", "requires": { + "is-core-module": "^2.0.0", "path-parse": "^1.0.6" } }, @@ -11186,6 +10096,54 @@ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, "postcss": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", @@ -11196,21 +10154,6 @@ "source-map": "^0.6.1", "supports-color": "^6.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -11291,14 +10234,16 @@ "inherits": "^2.0.1" } }, + "rope-sequence": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.2.tgz", + "integrity": "sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg==" + }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true }, "run-queue": { "version": "1.0.3", @@ -11346,33 +10291,27 @@ "dev": true }, "sass": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.12.tgz", - "integrity": "sha512-u5Rxn+dKTPCW5/11kMNxtmqKsxCjcpnqj9CaJoru1NqeJ0DOa9rOM00e0HqmseTAatGkKoLY+jaNecMYevu1gg==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.29.0.tgz", + "integrity": "sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", - "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", "semver": "^6.3.0" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -11388,37 +10327,38 @@ "dev": true }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -11436,12 +10376,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "dev": true, "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { @@ -11450,11 +10390,60 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -11503,15 +10492,21 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true } } }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -11538,6 +10533,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -11594,26 +10595,17 @@ "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, "requires": { "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } } }, "slash": { @@ -11629,14 +10621,6 @@ "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "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 - } } }, "snapdragon": { @@ -11681,6 +10665,18 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "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 } } }, @@ -11744,12 +10740,6 @@ "kind-of": "^3.2.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -11762,13 +10752,14 @@ } }, "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", "dev": true, "requires": { "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" } }, "sockjs-client": { @@ -11811,19 +10802,10 @@ } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "sortablejs": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", - "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" }, "source-list-map": { "version": "2.0.1", @@ -11832,18 +10814,17 @@ "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 + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -11851,21 +10832,13 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "source-map-url": { @@ -11875,9 +10848,9 @@ "dev": true }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -11888,12 +10861,12 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -11919,12 +10892,12 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -11934,9 +10907,9 @@ "dev": true }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -11962,12 +10935,13 @@ "dev": true }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" } }, "stable": { @@ -11977,9 +10951,9 @@ "dev": true }, "stackframe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz", - "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "dev": true }, "static-extend": { @@ -12003,6 +10977,12 @@ } } }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -12037,46 +11017,100 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "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" + }, + "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 + }, + "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" + } + } + } + }, + "string.prototype.trimend": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "string_decoder": { @@ -12120,27 +11154,27 @@ }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -12173,80 +11207,27 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, - "postcss": { - "version": "7.0.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", - "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { "has-flag": "^3.0.0" } }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - } - }, "sweet-modal-vue": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sweet-modal-vue/-/sweet-modal-vue-2.0.0.tgz", @@ -12275,39 +11256,66 @@ "string-width": "^2.1.1" }, "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 - }, - "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 - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "has-flag": "^3.0.0" } } } }, + "tailwindcss": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.9.6.tgz", + "integrity": "sha512-nY8WYM/RLPqGsPEGEV2z63riyQPcHYZUJpAwdyBzVpxQHOHqHE+F/fvbCeXhdF1+TA5l72vSkZrtYCB9hRcwkQ==", + "requires": { + "@fullhuman/postcss-purgecss": "^2.1.2", + "autoprefixer": "^9.4.5", + "browserslist": "^4.12.0", + "bytes": "^3.0.0", + "chalk": "^3.0.0 || ^4.0.0", + "color": "^3.1.2", + "detective": "^5.2.0", + "fs-extra": "^8.0.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.20", + "node-emoji": "^1.8.1", + "normalize.css": "^8.0.1", + "object-hash": "^2.0.3", + "postcss": "^7.0.11", + "postcss-functions": "^3.0.0", + "postcss-js": "^2.0.0", + "postcss-nested": "^4.1.1", + "postcss-selector-parser": "^6.0.0", + "postcss-value-parser": "^4.1.0", + "pretty-hrtime": "^1.0.3", + "reduce-css-calc": "^2.1.6", + "resolve": "^1.14.2" + } + }, + "tailwindcss-plugins": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss-plugins/-/tailwindcss-plugins-0.3.0.tgz", + "integrity": "sha512-B3zEQWBpD6WqY97gw7nIXYgYp6E/Z48M2dQDx8RHdaSqVNzzAMOkjvbqDjyckqYJu1xGqsMQuiVXxjoodqvKfQ==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -12325,82 +11333,110 @@ "source-map-support": "~0.5.10" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true } } }, "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", "dev": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" }, "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "terser": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.8.tgz", - "integrity": "sha512-otmIRlRVmLChAWsnSFNO0Bfk6YySuBp6G9qrHiJwlLDd4mxe2ta4sjI7TzIR+W1nBMjilzrMcPOz9pSusgx3hQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -12439,9 +11475,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -12453,6 +11489,68 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiptap": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/tiptap/-/tiptap-1.30.0.tgz", + "integrity": "sha512-zvSwxvBjp2ZchtX1+ZwCI7bx8n5FZrKW5aPTsQWt7WaWOkYZ23lYoT2dvk2b8JJhWnLWAOeTTnGTPpA6AxhOsw==", + "requires": { + "prosemirror-commands": "1.1.4", + "prosemirror-dropcursor": "1.3.2", + "prosemirror-gapcursor": "1.1.5", + "prosemirror-inputrules": "1.1.2", + "prosemirror-keymap": "1.1.4", + "prosemirror-model": "1.11.2", + "prosemirror-state": "1.3.3", + "prosemirror-view": "1.15.7", + "tiptap-commands": "^1.15.0", + "tiptap-utils": "^1.11.0" + } + }, + "tiptap-commands": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/tiptap-commands/-/tiptap-commands-1.15.0.tgz", + "integrity": "sha512-/o4R/99G4oOSnFXmS90hVpUuLx03HFM/NY7uBEYzhlJmW+3A+1wXVu77zP/I+Ohx0kfBi8yyAxYCa9YX9ahnjg==", + "requires": { + "prosemirror-commands": "^1.1.4", + "prosemirror-inputrules": "^1.1.2", + "prosemirror-model": "^1.11.2", + "prosemirror-schema-list": "^1.1.4", + "prosemirror-state": "^1.3.3", + "prosemirror-tables": "^1.1.1", + "prosemirror-utils": "^0.9.6", + "tiptap-utils": "^1.11.0" + } + }, + "tiptap-extensions": { + "version": "1.33.2", + "resolved": "https://registry.npmjs.org/tiptap-extensions/-/tiptap-extensions-1.33.2.tgz", + "integrity": "sha512-8Xj3L3k2tvJzcTfTPCC5oj0wMLWK77+uAwA7dGrz9X5A0Q0de0Ug3ym+sUaojsjNQ22gsPq0dN8VM6+mVqrfrQ==", + "requires": { + "lowlight": "^1.14.0", + "prosemirror-collab": "^1.2.2", + "prosemirror-history": "^1.1.3", + "prosemirror-model": "^1.11.2", + "prosemirror-state": "^1.3.3", + "prosemirror-tables": "^1.1.1", + "prosemirror-transform": "^1.2.8", + "prosemirror-utils": "^0.9.6", + "prosemirror-view": "^1.15.7", + "tiptap": "^1.30.0", + "tiptap-commands": "^1.15.0", + "tiptap-utils": "^1.11.0" + } + }, + "tiptap-utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/tiptap-utils/-/tiptap-utils-1.11.0.tgz", + "integrity": "sha512-lv/Fj8vZxPLSxHoDQVG2XVJC5h/Txtcrg+uArtvsZbVDFYyT1Boa/pal7YPQD7572uBlzlh3YtBPcFwcRBCGJA==", + "requires": { + "prosemirror-model": "^1.11.2", + "prosemirror-state": "^1.3.3", + "prosemirror-tables": "^1.1.1", + "prosemirror-utils": "^0.9.6" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12483,12 +11581,6 @@ "kind-of": "^3.0.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -12543,9 +11635,9 @@ "dev": true }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "tty-browserify": { @@ -12555,9 +11647,9 @@ "dev": true }, "type": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/type/-/type-1.0.3.tgz", - "integrity": "sha512-51IMtNfVcee8+9GJvj0spSuFcZHe9vSib6Xtgsny1Km9ugyz2mbS08I3rsUIRYgJohFRFU1160sgRodYz378Hg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "dev": true }, "type-check": { @@ -12600,12 +11692,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -12626,15 +11712,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { @@ -12647,13 +11733,20 @@ "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } } }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, "uniqs": { "version": "2.0.0", @@ -12682,8 +11775,7 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "unpipe": { "version": "1.0.0", @@ -12734,12 +11826,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true } } }, @@ -12756,9 +11842,9 @@ "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -12824,17 +11910,18 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "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==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } }, "utils-merge": { @@ -12844,9 +11931,9 @@ "dev": true }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v-money": { @@ -12855,19 +11942,19 @@ "integrity": "sha512-raz87AP5F2YEpv1GAocI3SC/y9af1+TQeZQIhAK5UNovho6dnh6RQBa5UG8ZNC+BPLpUh5VECi7EWTjr4+4s1g==" }, "v-tooltip": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.0.2.tgz", - "integrity": "sha512-xQ+qzOFfywkLdjHknRPgMMupQNS8yJtf9Utd5Dxiu/0n4HtrxqsgDtN2MLZ0LKbburtSAQgyypuE/snM8bBZhw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.0.3.tgz", + "integrity": "sha512-KZZY3s+dcijzZmV2qoDH4rYmjMZ9YKGBVoUznZKQX0e3c2GjpJm3Sldzz8HHH2Ud87JqhZPB4+4gyKZ6m98cKQ==", "requires": { - "lodash": "^4.17.11", - "popper.js": "^1.15.0", + "lodash": "^4.17.15", + "popper.js": "^1.16.0", "vue-resize": "^0.4.5" } }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "vary": { @@ -12877,26 +11964,26 @@ "dev": true }, "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", "dev": true }, "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, "vue": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", - "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" }, "vue-avatar-cropper": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vue-avatar-cropper/-/vue-avatar-cropper-1.0.5.tgz", - "integrity": "sha512-NNIZrc2CKZx8iIeVHom6PTxPgNtPolrmTkE0nlSokcf7shSse7XpiIXvJmBI/P3Jy2k4a31iroSYc31wn93sMg==" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/vue-avatar-cropper/-/vue-avatar-cropper-1.0.9.tgz", + "integrity": "sha512-qTHlx+PLtU/iZc9Pu6muP2hGrBbL0CpaBDGsenRvS7qKDsV/WzWQSM8z8CD5XpBWXm7l2toNAYwkhmWepk0YMg==" }, "vue-eslint-parser": { "version": "2.0.3", @@ -12912,34 +11999,40 @@ "lodash": "^4.17.4" } }, + "vue-flatpickr-component": { + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/vue-flatpickr-component/-/vue-flatpickr-component-8.1.6.tgz", + "integrity": "sha512-RUu/M/1lbuzQT+U3yP7O5/M2EIizr9vXLXqSc1eFOvCT3AHurQg8+iO02rjW+2l78Kit8pCNAUvHw7eexws6hw==", + "requires": { + "flatpickr": "^4.6.6" + } + }, "vue-hot-reload-api": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==" }, "vue-i18n": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.14.1.tgz", - "integrity": "sha512-uHzw5GTFyf/TmjJXveSl3L4CG61KI4lvhKOQvx8W4Y8P2LZ3v3l/qw4KRs1C6pWyjkfY9p0rezYNFO5YzMEQ8A==" + "version": "8.22.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.1.tgz", + "integrity": "sha512-JNgiEJ5a8YPfk5y2lKyfOAGLmkpAVfhaUi+T4wGpSppRYZ3XSyawSDDketY5KV2CsAiBLAGEIO6jO+0l2hQubg==" }, "vue-loader": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.1.tgz", - "integrity": "sha512-fwIKtA23Pl/rqfYP5TSGK7gkEuLhoTvRYW+TU7ER3q9GpNLt/PjG5NLv3XHRDiTg7OPM1JcckBgds+VnAc+HbA==", - "dev": true, + "version": "15.9.5", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.5.tgz", + "integrity": "sha512-oeMOs2b5o5gRqkxfds10bCx6JeXYTwivRgbb8hzOrcThD2z1+GqEKE3EX9A2SGbsYDf4rXwRg6D5n1w0jO5SwA==", "requires": { - "@vue/component-compiler-utils": "^3.0.0", + "@vue/component-compiler-utils": "^3.1.0", "hash-sum": "^1.0.2", "loader-utils": "^1.1.0", "vue-hot-reload-api": "^2.3.0", "vue-style-loader": "^4.1.0" } }, - "vue-multiselect": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.6.tgz", - "integrity": "sha512-s7jmZPlm9FeueJg1RwJtnE9KNPtME/7C8uRWSfp9/yEN4M8XcS/d+bddoyVwVnvFyRh9msFo0HWeW0vTL8Qv+w==" + "vue-outside-events": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vue-outside-events/-/vue-outside-events-1.1.3.tgz", + "integrity": "sha512-8FZqTRy3JUd1L/CFDoUPpuk4uM3piWFX1EixgKp4E3iOwDZfDHZVsnPYORbazs41XFB5u1EVPUOzbrR8iI4ImQ==" }, "vue-resize": { "version": "0.4.5", @@ -12955,21 +12048,15 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", - "dev": true, "requires": { "hash-sum": "^1.0.2", "loader-utils": "^1.0.2" } }, - "vue-tabs-component": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vue-tabs-component/-/vue-tabs-component-1.5.0.tgz", - "integrity": "sha512-ld4p+hv49Fimw+zv/7GQqMhbjAHjpbWF3UiJtmMaSnvLKbsB1ysfs9dQH0SZ8NvdYpqqKay/VLIqR9yXgse1Sg==" - }, "vue-template-compiler": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", - "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", "dev": true, "requires": { "de-indent": "^1.0.2", @@ -12979,8 +12066,7 @@ "vue-template-es2015-compiler": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==" }, "vue2-dropzone": { "version": "3.6.0", @@ -12990,18 +12076,23 @@ "dropzone": "^5.5.1" } }, - "vuedraggable": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.23.2.tgz", - "integrity": "sha512-PgHCjUpxEAEZJq36ys49HfQmXglattf/7ofOzUrW2/rRdG7tu6fK84ir14t1jYv4kdXewTEa2ieKEAhhEMdwkQ==", - "requires": { - "sortablejs": "^1.10.1" - } + "vue2-timepicker": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/vue2-timepicker/-/vue2-timepicker-1.1.5.tgz", + "integrity": "sha512-jMbw3BhVguuukwfzO7jvS2Ais7zDX/I9OjFO59IZU7cNv9EfxFAcU7MxDK85FwJLsSTm+ZTMIXAZPnGLLrFLwA==" }, - "vuejs-datepicker": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vuejs-datepicker/-/vuejs-datepicker-1.6.2.tgz", - "integrity": "sha512-PkC4vxzFBo7i6FSCUAJfnaWOx6VkKbOqxijSGHHlWxh8FIUKEZVtFychkonVWtK3iwWfhmYtqHcwsmgxefLpLQ==" + "vue2-transitions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/vue2-transitions/-/vue2-transitions-0.3.0.tgz", + "integrity": "sha512-m1ad8K8kufqiEhj5gXHkkqOioI5sW0FaMbRiO0Tv2WFfGbO2eIKrfkFiO3HPQtMJboimaLCN4p/zL81clLbG4w==" + }, + "vuedraggable": { + "version": "2.24.3", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "requires": { + "sortablejs": "1.10.2" + } }, "vuelidate": { "version": "0.6.2", @@ -13009,19 +12100,146 @@ "integrity": "sha512-rowo/OSwC8XEGdWg+ZgTpcgxYtmbQKbGOw4Z+lfT/BkNPoNyPEVgIeObUhhFO7Q7Lz0u0p429qfus/BHs9tMpg==" }, "vuex": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz", - "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz", + "integrity": "sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw==" + }, + "w3c-keyname": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", + "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==" }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" } }, "wbuf": { @@ -13034,58 +12252,87 @@ } }, "webpack": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.1.tgz", - "integrity": "sha512-ak7u4tUu/U63sCVxA571IuPZO/Q0pZ9cEXKg+R/woxkDzVovq57uB6L2Hlg/pC8LCU+TWpvtcYwsstivQwMJmw==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", + "enhanced-resolve": "^4.3.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", "loader-utils": "^1.2.3", "memory-fs": "^0.4.1", "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "neo-async": "^2.6.1", "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", - "watchpack": "^1.6.0", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "eslint-scope": { @@ -13099,81 +12346,20 @@ } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-cli": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.9.tgz", - "integrity": "sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, "find-up": { @@ -13185,90 +12371,142 @@ "locate-path": "^3.0.0" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "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 - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "yallist": "^3.0.2" } }, - "locate-path": { + "pkg-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "find-up": "^3.0.0" } }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "p-try": "^2.0.0" + "figgy-pudding": "^3.5.1" } }, - "p-locate": { + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "locate-path": "^3.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -13289,65 +12527,22 @@ "ansi-regex": "^4.1.0" } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "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 - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "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 - }, "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "yargs-parser": "^13.1.2" } } } @@ -13366,17 +12561,17 @@ }, "dependencies": { "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true } } }, "webpack-dev-server": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.2.tgz", - "integrity": "sha512-0xxogS7n5jHDQWy0WST0q6Ykp7UGj4YvWh+HVN71JoE7BwPxMZrwgraBvmdEMbDVMBzF0u+mEzn8TQzBm5NYJQ==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -13387,98 +12582,70 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.4", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.24", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", + "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "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" - } - } - } + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "find-up": { @@ -13490,105 +12657,24 @@ "locate-path": "^3.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "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 - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -13607,78 +12693,43 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" }, "dependencies": { "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "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 - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } } } @@ -13721,37 +12772,21 @@ "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "dev": true, "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "which": { @@ -13763,6 +12798,12 @@ "isexe": "^2.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 + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -13779,20 +12820,48 @@ } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "0.2.1", @@ -13803,23 +12872,189 @@ "mkdirp": "^0.5.1" } }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "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 }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/package.json b/package.json index 024a1f53..e043b598 100644 --- a/package.json +++ b/package.json @@ -10,45 +10,39 @@ "devDependencies": { "babel-eslint": "^8.2.6", "cross-env": "^5.1", - "css-loader": "^0.28.8", "eslint": "^4.19.1", "eslint-config-prettier": "^6.10.1", "eslint-loader": "^3.0.3", "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-vue": "^4.7.1", - "laravel-mix": "^5.0.0", + "laravel-mix": "^5.0.7", "prettier": "^2.0.2", "resolve-url-loader": "3.1.0", - "sass": "^1.22.9", - "sass-loader": "7.*", + "sass": "^1.29.0", + "sass-loader": "^8.0.2", + "tailwindcss-plugins": "^0.3.0", "vue-template-compiler": "^2.6.10" }, "dependencies": { - "@fortawesome/fontawesome-free": "^5.11.2", - "@fortawesome/fontawesome-svg-core": "^1.2.25", - "@fortawesome/free-regular-svg-icons": "^5.11.2", - "@fortawesome/free-solid-svg-icons": "^5.11.2", - "@fortawesome/vue-fontawesome": "^0.1.7", + "@bytefury/spacewind": "^0.3.3", + "@vue-hero-icons/outline": "^1.6.3", + "@vue-hero-icons/solid": "^1.6.3", "axios": "^0.19", - "bootstrap": "^4.1.0", "chart.js": "^2.7.3", "guid": "0.0.12", "lodash": "^4.17.13", - "moment": "^2.18.1", + "moment": "^2.29.1", "sweet-modal-vue": "^2.0.0", "sweetalert": "^2.1.2", + "tailwindcss": "^1.9.1", "toastr": "^2.1.4", - "v-money": "^0.8.1", "v-tooltip": "^2.0.2", - "vue": "^2.5.17", - "vue-avatar-cropper": "^1.0.5", - "vue-i18n": "^8.14.0", - "vue-multiselect": "^2.1.3", + "vue": "^2.6.10", + "vue-i18n": "^8.22.0", + "vue-loader": "^15.9.3", "vue-router": "2.7.0", - "vue-tabs-component": "^1.5.0", - "vue2-dropzone": "^3.0.6", - "vuedraggable": "^2.23.2", - "vuejs-datepicker": "^1.3.0", + "vue2-transitions": "^0.3.0", + "vuedraggable": "^2.24.2", "vuelidate": "^0.6.2", "vuex": "^3.0.1" } diff --git a/phpunit.xml b/phpunit.xml index 8f955878..2ae23513 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,16 +1,14 @@ - + colors="true"> - - ./tests + + ./tests/Unit + + + ./tests/Feature @@ -19,12 +17,14 @@ - - - - - - - + + + + + + + + + diff --git a/public/assets/css/crater.css b/public/assets/css/crater.css index d89fa31b..28bbee24 100644 --- a/public/assets/css/crater.css +++ b/public/assets/css/crater.css @@ -1,6 +1 @@ -/*! - * Bootstrap v4.4.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#5851d8;--secondary:#55547a;--success:#00c99c;--info:#15b2ec;--warning:#f3af4e;--danger:#fb7178;--light:#817ae3;--dark:#55547a;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:1.2rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:1.2rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#5851d8;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#d0cef4}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#a8a5eb}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#bcb9ef}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#cfcfda}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#a7a6ba}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c1c1cf}.table-success,.table-success>td,.table-success>th{background-color:#b8f0e3}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#7ae3cc}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#a3ecdb}.table-info,.table-info>td,.table-info>th{background-color:#bde9fa}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#85d7f5}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#a5e1f8}.table-warning,.table-warning>td,.table-warning>th{background-color:#fce9cd}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#f9d5a3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fbdeb5}.table-danger,.table-danger>td,.table-danger>th{background-color:#fed7d9}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#fdb5b9}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#fdbec1}.table-light,.table-light>td,.table-light>th{background-color:#dcdaf7}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#bdbaf0}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#c8c5f2}.table-dark,.table-dark>td,.table-dark>th{background-color:#cfcfda}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#a7a6ba}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#c1c1cf}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#3a32d1;border-color:#352dc9}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(113,107,222,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#352dc9;border-color:#322bbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(113,107,222,.5)}.btn-secondary{color:#fff;background-color:#55547a;border-color:#55547a}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#454463;border-color:#403f5c}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(111,110,142,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#55547a;border-color:#55547a}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#403f5c;border-color:#3b3a54}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(111,110,142,.5)}.btn-success{color:#fff;background-color:#00c99c;border-color:#00c99c}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#00a37e;border-color:#009674}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(38,209,171,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#00c99c;border-color:#00c99c}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#009674;border-color:#00896b}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,209,171,.5)}.btn-info{color:#fff;background-color:#15b2ec;border-color:#15b2ec}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#1098ca;border-color:#0f8fbf}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(56,190,239,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#15b2ec;border-color:#15b2ec}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#0f8fbf;border-color:#0f86b3}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(56,190,239,.5)}.btn-warning{color:#212529;background-color:#f3af4e;border-color:#f3af4e}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#f19f2a;border-color:#f0991e}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(212,154,72,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#f3af4e;border-color:#f3af4e}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#f0991e;border-color:#ef9412}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(212,154,72,.5)}.btn-danger{color:#212529;background-color:#fb7178;border-color:#fb7178}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#fa4c55;border-color:#fa3f49}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(218,102,108,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#212529;background-color:#fb7178;border-color:#fb7178}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#fa3f49;border-color:#f9333d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(218,102,108,.5)}.btn-light{color:#fff;background-color:#817ae3;border-color:#817ae3}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#fff;background-color:#635adc;border-color:#5950da}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(148,142,231,.5)}.btn-light.disabled,.btn-light:disabled{color:#fff;background-color:#817ae3;border-color:#817ae3}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#5950da;border-color:#4f45d8}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(148,142,231,.5)}.btn-dark{color:#fff;background-color:#55547a;border-color:#55547a}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#454463;border-color:#403f5c}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(111,110,142,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#55547a;border-color:#55547a}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#403f5c;border-color:#3b3a54}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(111,110,142,.5)}.btn-outline-primary{color:#5851d8;border-color:#5851d8}.btn-outline-primary:hover{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#5851d8;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.btn-outline-secondary{color:#55547a;border-color:#55547a}.btn-outline-secondary:hover{color:#fff;background-color:#55547a;border-color:#55547a}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(85,84,122,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#55547a;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#55547a;border-color:#55547a}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(85,84,122,.5)}.btn-outline-success{color:#00c99c;border-color:#00c99c}.btn-outline-success:hover{color:#fff;background-color:#00c99c;border-color:#00c99c}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(0,201,156,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#00c99c;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#00c99c;border-color:#00c99c}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,201,156,.5)}.btn-outline-info{color:#15b2ec;border-color:#15b2ec}.btn-outline-info:hover{color:#fff;background-color:#15b2ec;border-color:#15b2ec}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(21,178,236,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#15b2ec;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#15b2ec;border-color:#15b2ec}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(21,178,236,.5)}.btn-outline-warning{color:#f3af4e;border-color:#f3af4e}.btn-outline-warning:hover{color:#212529;background-color:#f3af4e;border-color:#f3af4e}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(243,175,78,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f3af4e;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#f3af4e;border-color:#f3af4e}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(243,175,78,.5)}.btn-outline-danger{color:#fb7178;border-color:#fb7178}.btn-outline-danger:hover{color:#212529;background-color:#fb7178;border-color:#fb7178}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(251,113,120,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#fb7178;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#212529;background-color:#fb7178;border-color:#fb7178}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(251,113,120,.5)}.btn-outline-light{color:#817ae3;border-color:#817ae3}.btn-outline-light:hover{color:#fff;background-color:#817ae3;border-color:#817ae3}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(129,122,227,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#817ae3;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#817ae3;border-color:#817ae3}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(129,122,227,.5)}.btn-outline-dark{color:#55547a;border-color:#55547a}.btn-outline-dark:hover{color:#fff;background-color:#55547a;border-color:#55547a}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(85,84,122,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#55547a;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#55547a;border-color:#55547a}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(85,84,122,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#040405;background-clip:padding-box;border:1px solid #040405;border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #595959}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#fff;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#5851d8;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba%280,0,0,0.5%29' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba%28255,255,255,0.5%29' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:#fff;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#5851d8}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#352dc9}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.badge-secondary{color:#fff;background-color:#55547a}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#403f5c}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(85,84,122,.5)}.badge-success{color:#fff;background-color:#00c99c}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#009674}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,201,156,.5)}.badge-info{color:#fff;background-color:#15b2ec}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#0f8fbf}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(21,178,236,.5)}.badge-warning{color:#212529;background-color:#f3af4e}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#f0991e}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(243,175,78,.5)}.badge-danger{color:#212529;background-color:#fb7178}a.badge-danger:focus,a.badge-danger:hover{color:#212529;background-color:#fa3f49}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(251,113,120,.5)}.badge-light{color:#fff;background-color:#817ae3}a.badge-light:focus,a.badge-light:hover{color:#fff;background-color:#5950da}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(129,122,227,.5)}.badge-dark{color:#fff;background-color:#55547a}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#403f5c}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(85,84,122,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#2e2a70;background-color:#dedcf7;border-color:#d0cef4}.alert-primary hr{border-top-color:#bcb9ef}.alert-primary .alert-link{color:#1f1c4b}.alert-secondary{color:#2c2c3f;background-color:#dddde4;border-color:#cfcfda}.alert-secondary hr{border-top-color:#c1c1cf}.alert-secondary .alert-link{color:#171721}.alert-success{color:#006951;background-color:#ccf4eb;border-color:#b8f0e3}.alert-success hr{border-top-color:#a3ecdb}.alert-success .alert-link{color:#00362a}.alert-info{color:#0b5d7b;background-color:#d0f0fb;border-color:#bde9fa}.alert-info hr{border-top-color:#a5e1f8}.alert-info .alert-link{color:#073a4c}.alert-warning{color:#7e5b29;background-color:#fdefdc;border-color:#fce9cd}.alert-warning hr{border-top-color:#fbdeb5}.alert-warning .alert-link{color:#583f1c}.alert-danger{color:#833b3e;background-color:#fee3e4;border-color:#fed7d9}.alert-danger hr{border-top-color:#fdbec1}.alert-danger .alert-link{color:#602b2d}.alert-light{color:#433f76;background-color:#e6e4f9;border-color:#dcdaf7}.alert-light hr{border-top-color:#c8c5f2}.alert-light .alert-link{color:#302d55}.alert-dark{color:#2c2c3f;background-color:#dddde4;border-color:#cfcfda}.alert-dark hr{border-top-color:#c1c1cf}.alert-dark .alert-link{color:#171721}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#2e2a70;background-color:#d0cef4}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#2e2a70;background-color:#bcb9ef}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#2e2a70;border-color:#2e2a70}.list-group-item-secondary{color:#2c2c3f;background-color:#cfcfda}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#2c2c3f;background-color:#c1c1cf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#2c2c3f;border-color:#2c2c3f}.list-group-item-success{color:#006951;background-color:#b8f0e3}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#006951;background-color:#a3ecdb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#006951;border-color:#006951}.list-group-item-info{color:#0b5d7b;background-color:#bde9fa}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0b5d7b;background-color:#a5e1f8}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0b5d7b;border-color:#0b5d7b}.list-group-item-warning{color:#7e5b29;background-color:#fce9cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#7e5b29;background-color:#fbdeb5}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7e5b29;border-color:#7e5b29}.list-group-item-danger{color:#833b3e;background-color:#fed7d9}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#833b3e;background-color:#fdbec1}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#833b3e;border-color:#833b3e}.list-group-item-light{color:#433f76;background-color:#dcdaf7}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#433f76;background-color:#c8c5f2}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#433f76;border-color:#433f76}.list-group-item-dark{color:#2c2c3f;background-color:#cfcfda}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#2c2c3f;background-color:#c1c1cf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#2c2c3f;border-color:#2c2c3f}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Poppins,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Poppins,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{transform:rotate(1turn)}}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#5851d8!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#352dc9!important}.bg-secondary{background-color:#55547a!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#403f5c!important}.bg-success{background-color:#00c99c!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#009674!important}.bg-info{background-color:#15b2ec!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#0f8fbf!important}.bg-warning{background-color:#f3af4e!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#f0991e!important}.bg-danger{background-color:#fb7178!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#fa3f49!important}.bg-light{background-color:#817ae3!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#5950da!important}.bg-dark{background-color:#55547a!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#403f5c!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#5851d8!important}.border-secondary{border-color:#55547a!important}.border-success{border-color:#00c99c!important}.border-info{border-color:#15b2ec!important}.border-warning{border-color:#f3af4e!important}.border-danger{border-color:#fb7178!important}.border-light{border-color:#817ae3!important}.border-dark{border-color:#55547a!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#5851d8!important}a.text-primary:focus,a.text-primary:hover{color:#3028b4!important}.text-secondary{color:#55547a!important}a.text-secondary:focus,a.text-secondary:hover{color:#35354d!important}.text-success{color:#00c99c!important}a.text-success:focus,a.text-success:hover{color:#007d61!important}.text-info{color:#15b2ec!important}a.text-info:focus,a.text-info:hover{color:#0e7ea7!important}.text-warning{color:#f3af4e!important}a.text-warning:focus,a.text-warning:hover{color:#e58d10!important}.text-danger{color:#fb7178!important}a.text-danger:focus,a.text-danger:hover{color:#f92731!important}.text-light{color:#817ae3!important}a.text-light:focus,a.text-light:hover{color:#453bd6!important}.text-dark{color:#55547a!important}a.text-dark:focus,a.text-dark:hover{color:#35354d!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div:hover{box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.skin-crater .main-content{background:#f9fbff}.skin-crater .no-data-info .title{font-weight:500;font-size:17.5px}.skin-crater .no-data-info .description{font-size:15px;color:#595959}.skin-crater .site-header{background:linear-gradient(90deg,#5851d8,#817ae3)!important;border-bottom:1px solid hsla(0,0%,90.2%,.7)}.skin-crater .site-header .brand-main{color:#fff;font-size:20px;font-family:poppins,sans-serif;font-style:normal;font-weight:900;letter-spacing:1px}.skin-crater .site-header .nav-toggle{background-color:#fff;color:#040405}.skin-crater .site-header .hamburger span{background:#040405}.skin-crater .site-header .hamburger-inner,.skin-crater .site-header .hamburger-inner:after,.skin-crater .site-header .hamburger-inner:before,.skin-crater .site-header .hamburger span:after,.skin-crater .site-header .hamburger span:before{background-color:#040405}.skin-crater .site-header .action-list li a{background-color:#fff;color:#040405}.skin-crater .site-header .action-list li a:hover{background-color:#f2f2f2;color:#040405}.skin-crater .site-header .dropdown-menu{background-color:#fff}.skin-crater .site-header .notification-dropdown .dropdown-header{border-bottom:1px solid #ebf1fa;color:#5851d8}.skin-crater .site-header .dropdown-divider{background-color:#a5acc1}.skin-crater .header-nav .dropdown-group.dropdown-group.active>.dropdown-activator>a{color:#5851d8}.skin-crater .header-nav .dropdown-group.has-child.toggle-arrow.active>.dropdown-activator:after{border-color:#5851d8 transparent transparent}.skin-crater .sidebar-left{background-color:#fff;border-right:1px solid #ebf1fa}.skin-crater .side-nav{margin:20px 0 0}.skin-crater .side-nav .side-nav-division{margin-bottom:20px}.skin-crater .side-nav .collapse-group .collapse-group-item a{color:#040405;font-family:poppins,sans-serif;font-size:14px}.skin-crater .side-nav .collapse-group .collapse-group-item a:hover{background-color:#d7e3f5}.skin-crater .side-nav .collapse-group .collapse-group-item.active>.collapse-item-title>a{color:#5851d8}.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-item-title i{color:#a5acc1}.skin-crater .side-nav .collapse-group .collapse-group-item.active i{color:#5851d8}.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items{background-color:#ebf1fa}.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items{background-color:#d7e3f5}.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items .collapse-group-items{background-color:#cadaf2}.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items a.active{color:#5851d8}.skin-crater .header-bottom{background-color:#fff;border-bottom:1px solid #b9c1d1}.skin-crater .header-nav li a{color:#040405}.skin-crater .header-nav li a:hover{background-color:#d7e3f5;color:#040405}.skin-crater .header-nav li.active>a,.skin-crater .header-nav li.active>a:hover,.skin-crater .header-nav li .dropdown-item.active{color:#5851d8;background-color:transparent}.skin-crater .header-nav li .dropdown-item.active:active,.skin-crater .header-nav li .dropdown-item.active:focus,.skin-crater .header-nav li .dropdown-item.active:hover{color:#5851d8;background-color:#d7e3f5}.skin-crater .tabs-component.tabs-default .tabs-component-tab a,.skin-crater .tabs-component.tabs-default .tabs-component-tab a:hover{color:#040405}.skin-crater .tabs-component.tabs-default .tabs-component-tab.is-active{border:1px solid #5851d8;background:#5851d8;color:#fff}.skin-crater .tabs-component.tabs-default .tabs-component-tab.is-active a{color:#fff}.skin-crater .tabs-component.tabs-default .tabs-component-tab:hover{border:1px solid #5851d8}.skin-crater .tabs-component.tabs-default .tabs-component-panels{border-top:1px solid #5851d8!important}.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs{border-right:1px solid #5851d8!important}.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a,.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a:hover{color:#040405}.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active{background:#5851d8}.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active a{color:#fff}.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab:hover{border:1px solid #5851d8}.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a{color:#a5acc1;font-weight:500}.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a:hover{color:#a5acc1;border-bottom:3px solid #a5acc1}.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active{border-bottom:3px solid #5851d8;color:#fff}.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active a{color:#040405}.skin-crater .tabs-component.tabs-simple .tabs-component-panels{border-top:1px solid #ebf1fa!important}.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs{border-right:1px solid #ddd}.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a{color:#a5acc1;font-weight:500}.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a:hover{border-right:3px solid #d0cef4}.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab.is-active{border-right:3px solid #5851d8;color:#5851d8}.skin-crater .code,.skin-crater code{background-color:#ebf1fa;color:#5851d8}.skin-crater .mark,.skin-crater mark{background-color:#5851d8;color:#fff}.skin-crater .todo-container{background-color:#5851d8!important;color:#fff!important}.skin-crater .todo-container h5{color:#fff!important}.skin-crater .vue-dropzone .dz-preview .dz-details{background-color:#5851d8!important;color:#fff!important}.skin-crater .vue-dropzone .dz-preview .dz-upload{background:#fff!important}.skin-crater .vue-dropzone .dz-preview .dz-error-mark svg #Page-1 g,.skin-crater .vue-dropzone .dz-preview .dz-success-mark svg g path{fill:#fff!important}.skin-crater .vue-dropzone .dz-preview .dz-remove{color:#fff!important;border:2px solid #fff!important}.skin-crater .dropdown-group.active>.dropdown-activator>a{color:#5851d8}.skin-crater .dropdown-group .dropdown-activator a{color:#040405}.skin-crater .dropdown-group .dropdown-activator a:hover{background-color:#ebf1fa}.skin-crater .dropdown-group.has-child.toggle-arrow.active>.dropdown-activator:after{border-color:#5851d8 transparent transparent}.skin-crater .dropdown-group .dropdown-container{color:#040405;background-color:#fff}.skin-crater .dropdown-group .dropdown-container .dropdown-group-item .dropdown-item{color:#040405;background-color:transparent;cursor:pointer}.skin-crater .dropdown-group .dropdown-container .dropdown-group-item .dropdown-item.active{color:#5851d8}.skin-crater .dropdown-group .dropdown-container .dropdown-group-item .dropdown-item:hover{background-color:#ebf1fa}.skin-crater .dropdown-group .dropdown-container .dropdown-activator:before{border-color:#040405 transparent transparent}.skin-crater .dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator a{color:#5851d8}.skin-crater .dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator:before{border-color:#5851d8 transparent transparent}.skin-crater .dropdown-group .dropdown-item-divider{border-top:1px solid #a5acc1}.skin-crater .btn-theme{background:#5851d8;color:#fff}.skin-crater .btn-theme:hover{color:#fff;background:#6862dc}.skin-crater .btn-theme-outline{color:#5851d8;border-color:#5851d8}.skin-crater .btn-theme-outline:hover{color:#fff;background-color:#5851d8;border-color:#5851d8}.skin-crater .btn-theme-outline.focus,.skin-crater .btn-theme-outline:focus{box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.skin-crater .btn-theme-outline.disabled,.skin-crater .btn-theme-outline:disabled{color:#5851d8;background-color:transparent}.show>.skin-crater .btn-theme-outline.dropdown-toggle,.skin-crater .btn-theme-outline:not(:disabled):not(.disabled).active,.skin-crater .btn-theme-outline:not(:disabled):not(.disabled):active{color:#fff;background-color:#5851d8;border-color:#5851d8}.show>.skin-crater .btn-theme-outline.dropdown-toggle:focus,.skin-crater .btn-theme-outline:not(:disabled):not(.disabled).active:focus,.skin-crater .btn-theme-outline:not(:disabled):not(.disabled):active:focus{box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.skin-crater .form-control:focus{border:1px solid #5851d8}.skin-crater .multiselect{color:#040405}.skin-crater .multiselect .multiselect__option--highlight{background:#f9fbff;color:#040405}.skin-crater .multiselect .multiselect__option--highlight.multiselect__option--selected{background:#ebf1fa;color:#040405}.skin-crater .multiselect .multiselect__option--highlight.multiselect__option--selected:after,.skin-crater .multiselect .multiselect__option--highlight:after{background:#b9c1d1;color:#040405}.skin-crater .multiselect .multiselect__tags-wrap .multiselect__tag{background:#5851d8;color:#fff}.skin-crater .multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon:hover{background:#5851d8}.skin-crater .multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon:after{color:#fff}.skin-crater .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover,.skin-crater .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover,.skin-crater .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover{border:1px solid #5851d8!important}.skin-crater .vdp-datepicker__calendar .cell.selected{background:#5851d8!important;color:#fff}.skin-crater .vdp-datepicker__calendar .cell.highlighted{background:#bcb9ef!important;color:#fff}.skin-crater .VueCarousel-dot .VueCarousel-dot-button{background:#a5acc1!important}.skin-crater .VueCarousel-dot.VueCarousel-dot--active .VueCarousel-dot-button{background:#5851d8!important}.skin-crater .mailbox .mailbox-content .mailbox-content-footer .page-link,.skin-crater .mailbox .mailbox-content .table tr td .content-subject{color:#040405}.skin-crater .mailbox .mailbox-content .mailbox-content-footer .active .page-link{background-color:#5851d8;border-color:#5851d8;color:#fff}.skin-crater .mailbox .mailbox-content .btn-favorite .active{color:#5851d8}.skin-crater .mailbox-modal .mail-body .message-heading.email a{color:#040405}.skin-crater .mailbox .mailbox-sidebar .sidebar-menu li.active{border-left:5px solid #5851d8}.skin-crater .mailbox .mailbox-sidebar .left-sidebar-btn,.skin-crater .mailbox .mailbox-sidebar .sidebar-menu li a{color:#040405}@media (max-width:480px){.skin-crater .header-nav .dropdown-menu{border:0!important;background-color:#ebf1fa!important}}.site-wrapper,body,html{height:100%;font-size:14px}body{background-color:#ebf1fa;font-family:Poppins,sans-serif;color:#262630;overflow-x:hidden}body i{font-family:Font Awesome\ 5 Free!important}h1,h2,h3,h4,h5,h6{color:#040405;font-weight:700}a{color:#263b5e}a:focus,a:hover{color:#355282;text-decoration:none;outline:none}.mark,mark{background-color:#efefef;border-radius:5px;color:#040405;padding:.2em .4em;margin:0 1px}.code,code{background-color:#040405;color:#5851d8}:active,:focus,:hover{outline:0}[v-cloak]{display:none}.text-default{color:#040405!important}@-webkit-keyframes spinner{to{transform:rotate(1turn)}}@keyframes spinner{to{transform:rotate(1turn)}}.fa-spinner{-webkit-animation:spinner 1.5s linear infinite;animation:spinner 1.5s linear infinite}.filter-section{background:#ebf1fa;position:relative;z-index:2;padding:30px;border-radius:5px}.clear-filter{position:absolute;top:10px;right:15px;font-size:14px;line-height:21px;color:#040405;cursor:pointer}.list-add-button{display:flex;width:100%;padding:13px 10px;background:#ebf1fa;justify-content:center;border:none;outline:none;align-items:center}.list-add-button .icon{color:#817ae3}.list-add-button label{font-family:Poppins;font-size:14px;margin:0 0 0 10px!important;line-height:14px;color:#817ae3}.btn-container{display:flex;justify-content:center;align-items:center}.swal-icon--custom{height:70px!important}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#5851d8!important;background-color:#5851d8!important}.avatar-cropper-btn:hover{background-color:#5851d8!important;color:#fff}.site-header{background-color:#5851d8;height:60px;padding:12px 30px;width:100%;z-index:1000}.sidebar-left,.site-header{left:0;position:fixed;top:0}.sidebar-left{background:#55547a;height:100%;padding:60px 0 10px;width:240px;z-index:30}.sidebar-body{height:100%;overflow-y:auto}.sidebar-body::-webkit-scrollbar{-webkit-appearance:none}.sidebar-body::-webkit-scrollbar:vertical{width:8px}.sidebar-body::-webkit-scrollbar:horizontal{height:8px}.sidebar-body::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid hsla(0,0%,100%,0);background-color:hsla(0,0%,100%,.3)}.sidebar-body::-webkit-scrollbar-track{background-color:transparent;border-radius:8px}.mobile-menu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:29;background:rgba(48,75,88,.5);display:none}.layout-default .main-content,.layout-icon-sidebar .main-content{padding:90px 30px 10px 270px;min-height:calc(100% - 39px)}.site-footer{background-color:#fff;color:#818a91;font-size:13px;font-weight:400;padding:10px 30px 10px 255px}.site-footer a{color:#263b5e}.page-header{margin-bottom:30px;position:relative}.page-header p{font-size:13px}.page-header select{border:none}.page-header .breadcrumb{background:none;padding:0}.page-header .page-actions{position:absolute;right:0;top:50%;transform:translateY(-50%);margin:auto}.template-container{height:100%}@media (max-width:767px){.site-header{padding:12px 15px}.sidebar-left{left:-240px;transition:left .3s ease}.sidebar-open .sidebar-left{left:0}.sidebar-open .mobile-menu-overlay{display:block}.layout-default .main-content,.layout-icon-sidebar .main-content{padding-left:15px;padding-right:15px}.site-footer{padding-left:15px}}.sidebar-left .menu-group{margin-bottom:40px}.sidebar-left .menu-group:first-child{margin-top:29px}.sidebar-left .menu-item{cursor:pointer;padding:10px 0 11px;display:block}.sidebar-left .menu-item .menu-text{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#040405}.sidebar-left .menu-item .menu-icon{color:#a5acc1;width:30px;margin-left:25px;display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.sidebar-left .active{background-color:#f9fbff;position:relative}.sidebar-left .active:after{position:absolute;height:100%;content:"";left:0;top:0;width:3px;background-color:#5851d8}.sidebar-left .active .menu-icon,.sidebar-left .active .menu-text{color:#5851d8!important}.brand-main img{height:25px}.nav-toggle{background-color:#040405;border-radius:2px;color:#fff;display:none;font-size:14px;line-height:9px;padding:6px}.nav-toggle:active,.nav-toggle:focus,.nav-toggle:visited{color:#fff}.action-list{float:right;list-style:none;margin:0}.action-list li{display:block;float:left;position:relative;height:36px;margin:0;padding:0 4px}.action-list li.action-item a{padding:11px}.action-list li .icon{color:#9ea9c4}.action-list li a{background-color:#040405;border-radius:2px;color:#fff;display:inline-block;font-size:14px!important;line-height:14px!important;padding:11px!important}.action-list li a:hover{background-color:#0f0f13;color:#fff}.action-list .avatar{padding:0!important;background-color:transparent}.action-list .avatar img{width:36px;height:36px;border-radius:2px}.action-list .dropdown-group{background-color:#040405}.action-list .dropdown-group i{text-align:center;width:auto}.action-list .dropdown-group.has-child>.dropdown-activator:after{content:none}.action-list .dropdown-group .dropdown-group-item i{width:25px}.action-list .notification-dropdown{padding:5px!important}.action-list .notification-dropdown .dropdown-header{border-bottom:1px solid #a5acc1;color:#5851d8;padding:3px 10px 8px;margin-bottom:0}@media (max-width:767px){.nav-toggle{display:inline-block;margin-left:10px}.brand-main{float:left}.brand-main img{height:36px;margin-bottom:3px}}.side-nav{list-style:none;margin:0;padding:0}.side-nav .collapse-group .collapse-group-item .collapse-item-title{display:block}.side-nav .collapse-group .collapse-group-item .collapse-item-title>a>.icon-fa.arrow{float:right;line-height:1.42857}.side-nav .collapse-group .collapse-group-item .collapse-item-title>a>.icon-fa.arrow:before{content:"\F104"}.side-nav .collapse-group .collapse-group-item a{color:#fff;display:block;font-size:14px;padding:12px 12px 12px 30px;position:relative;text-decoration:none}.side-nav .collapse-group .collapse-group-item a:hover{background-color:#1b1b21}.side-nav .collapse-group .collapse-group-item .icon{width:30px;color:#9ea9c4}.side-nav .collapse-group .collapse-group-item.active>.collapse-item-title>a .icon{color:#5851d8}.side-nav .collapse-group .collapse-group-item.active>.collapse-item-title>a .icon>.icon-fa.arrow:before{content:"\F107"}.side-nav .collapse-group .collapse-group-item .collapse-group-items{background-color:#0b0b0e;padding:0}.side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items{background-color:#16161c}.side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items .collapse-group-items{background-color:#1d1d24}.side-nav .collapse-group .collapse-group-item .collapse-group-items a.active{color:#5851d8}.base-date-input{width:100%;position:relative}.base-date-input .date-field{width:100%;height:40px;background:#fff;border:1px solid #ebf1fa;box-sizing:border-box;border-radius:5px;display:inline-block;padding:0 6px 0 40px;font-size:1rem;line-height:1.4;cursor:pointer}.base-date-input .date-field:focus{border:1px solid #817ae3}.base-date-input .date-field.invalid{border:1px solid #fb7178!important}.vdp-datepicker__calendar-button{position:absolute;width:13px;height:18px;color:#b9c1d1;font-style:normal;font-weight:900;font-size:14px;line-height:16px;top:50%;left:20px;transform:translate(-50%,-50%)}.vdp-datepicker__calendar-button .icon-fa{color:#b9c1d1}.base-input{width:100%;position:relative}.base-input .left-icon{position:absolute;width:13px;height:18px;min-width:40px;color:#b9c1d1;font-style:normal;font-weight:900;font-size:14px;line-height:16px;top:50%;left:20px;z-index:1;transform:translate(-50%,-50%)}.base-input .right-icon,.base-input .right-input-group-text{position:absolute;width:13px;height:18px;min-width:18px;color:#b9c1d1;font-style:normal;font-weight:900;font-size:14px;line-height:16px;top:50%;right:0;z-index:1;transform:translate(-50%,-50%)}.base-input .small-input{max-width:100px}.base-input .input-field{width:100%;height:40px;padding:8px 13px;text-align:left;background:#fff;border:1px solid #ebf1fa;box-sizing:border-box;border-radius:5px;font-style:normal;font-weight:400;font-size:14px;line-height:21px}.base-input .input-field.v-money{font-family:Arial,Helvetica,sans-serif!important}.base-input .input-field::-webkit-input-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-input .input-field::-moz-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-input .input-field:-ms-input-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-input .input-field::-ms-input-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-input .input-field::placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-input .input-field:focus{border:1px solid #817ae3}.base-input .input-field.invalid{border:1px solid #fb7178!important}.base-input .input-field.disabled{background:#ebf1fa!important;color:#a5acc1!important}.base-input .input-field-left-icon{padding-left:35px}.base-input .input-field-right-icon{padding-right:35px}.base-button{height:40px;padding:6px 20px;font-size:14px;font-weight:500;text-align:center;display:flex;align-items:center;white-space:nowrap;line-height:14px}.base-button.btn-lg,.btn-group-lg>.base-button.btn{height:45px;font-size:15px;font-weight:500;text-align:center}.base-button.btn-sm,.btn-group-sm>.base-button.btn{height:34px;padding:5px 15px;font-size:12px;font-weight:500;text-align:center}.base-button.btn-danger,.base-button.btn-outline-danger:hover{color:#fff!important}.base-button .icon-button{text-align:center}.base-button .icon-left{margin-right:10px!important}.base-button .icon-right{margin-left:10px!important}.base-button.btn-cursor-not-allowed{cursor:not-allowed!important}.base-button .icon{margin-right:5px}.search-select,.search-select .activator{position:relative;width:100%}.search-select .activator{cursor:pointer}.search-select .selector-menu{display:flex;flex-direction:column;position:absolute;z-index:100;width:100%;top:0;background:#fff;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);border-radius:5px}.search-select .selector-menu-above{top:unset!important;bottom:100%!important}.base-text-area{width:100%}.base-text-area.text-area-field{width:100%;padding:8px 13px;text-align:left;background:#fff;border:1px solid #ebf1fa;box-sizing:border-box;border-radius:5px;font-style:normal;font-weight:500;font-size:14px;line-height:21px}.base-text-area.text-area-field::-webkit-input-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-text-area.text-area-field::-moz-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-text-area.text-area-field:-ms-input-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-text-area.text-area-field::-ms-input-placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-text-area.text-area-field::placeholder{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#b9c1d1}.base-text-area.text-area-field:focus{border:1px solid #817ae3}.base-text-area.text-area-field.invalid{border:1px solid #fb7178!important}.base-text-area.text-area-field.disabled{background:#ebf1fa!important;color:#a5acc1!important}.base-text-area.text-area-field-icon{padding-left:35px}.base-switch input[type=checkbox]{height:0;width:0;visibility:hidden}.base-switch label{cursor:pointer;text-indent:-9999px;width:35px;height:16px;background:#fff;border:1px solid #b9c1d1;display:block;border-radius:16px;position:relative}.base-switch label:after{content:"";position:absolute;top:-3px;left:0;width:20px;height:20px;background:#a5acc1;border-radius:15px;transition:.3s}.base-switch input:checked+label{background:rgba(88,81,216,.2)}.base-switch input:checked+label:after{left:100%;transform:translateX(-100%);background:#5851d8}.base-switch label:active:after{width:20px}@-webkit-keyframes ball-scale-ripple-multiple{0%{transform:scale(.1);opacity:1}70%{transform:scale(1);opacity:.7}to{opacity:0}}@keyframes ball-scale-ripple-multiple{0%{transform:scale(.1);opacity:1}70%{transform:scale(1);opacity:.7}to{opacity:0}}.loader{width:100%;position:relative;min-height:500px}.ball-scale-ripple-multiple{display:flex;justify-content:center;align-items:center;position:absolute;top:60%;left:40%;transform:translateY(-25px)}.ball-scale-ripple-multiple>div:nth-child(0){-webkit-animation-delay:-.8s;animation-delay:-.8s}.ball-scale-ripple-multiple>div:first-child{-webkit-animation-delay:-.6s;animation-delay:-.6s}.ball-scale-ripple-multiple>div:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}.ball-scale-ripple-multiple>div:nth-child(3){-webkit-animation-delay:-.2s;animation-delay:-.2s}.ball-scale-ripple-multiple>div{-webkit-animation-fill-mode:both;animation-fill-mode:both;position:absolute;top:-2px;left:-26px;width:50px;height:50px;border-radius:100%;border:2px solid #817ae3;-webkit-animation:ball-scale-ripple-multiple 1.25s cubic-bezier(.21,.53,.56,.8) 0s infinite;animation:ball-scale-ripple-multiple 1.25s cubic-bezier(.21,.53,.56,.8) 0s infinite}.base-prefix-input{display:flex;position:relative;width:100%;height:40px;padding:2px;flex-direction:row;background:#fff;border:1px solid #ebf1fa;border-radius:5px}.base-prefix-input .icon{width:13px;height:18px;color:#b9c1d1;font-style:normal;font-weight:900;font-size:14px;line-height:16px;margin-top:17px;margin-left:20px;z-index:1;transform:translate(-50%,-50%)}.base-prefix-input p{padding:0;margin:0}.base-prefix-input .prefix-label{display:flex;height:18px;color:#55547a;font-weight:500;font-size:14px;line-height:16px;padding:9px 2px 9px 10px}.base-prefix-input .prefix-input-field{width:100%;padding:8px 13px 8px 1px;text-align:left;background:#fff;border:none;font-style:normal;font-weight:400;font-size:14px;line-height:21px}.tooltip{display:block!important;z-index:10000}.tooltip .tooltip-inner{background:#000;color:#fff;border-radius:16px;padding:5px 10px 4px}.tooltip .tooltip-arrow{width:0;height:0;border-style:solid;position:absolute;margin:5px;border-color:#000;z-index:1}.tooltip[x-placement^=top]{margin-bottom:5px}.tooltip[x-placement^=top] .tooltip-arrow{border-width:5px 5px 0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;bottom:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.tooltip[x-placement^=bottom]{margin-top:5px}.tooltip[x-placement^=bottom] .tooltip-arrow{border-width:0 5px 5px;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important;top:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.tooltip[x-placement^=right]{margin-left:5px}.tooltip[x-placement^=right] .tooltip-arrow{border-width:5px 5px 5px 0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important;left:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}.tooltip[x-placement^=left]{margin-right:5px}.tooltip[x-placement^=left] .tooltip-arrow{border-width:5px 0 5px 5px;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;right:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}.tooltip.popover .popover-inner{background:#f9f9f9;color:#000;padding:24px;border-radius:5px;box-shadow:0 5px 30px rgba(0,0,0,.1)}.tooltip.popover .popover-arrow{border-color:#f9f9f9}.tooltip[aria-hidden=true]{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s}.tooltip[aria-hidden=false]{visibility:visible;opacity:1;transition:opacity .15s}.btn{font-family:Poppins,sans-serif}.btn.btn-pressable:active{transform:translateY(3px);-webkit-transform:translateY(3px)}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:none}.btn-default{border:1px solid #b9c1d1;background-color:#fff}.btn-default:active,.btn-default:focus,.btn-default:hover{background-color:#ebf1fa}.btn-outline-default{border:1px solid #b9c1d1;background-color:#fff}.btn-outline-default:active,.btn-outline-default:focus,.btn-outline-default:hover{background-color:#ebf1fa}.btn-theme{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-theme.focus,.btn-theme:focus,.btn-theme:hover{color:#fff;background-color:#3a32d1;border-color:#352dc9}.btn-theme.focus,.btn-theme:focus{box-shadow:0 0 0 .2rem rgba(113,107,222,.5)}.btn-theme.disabled,.btn-theme:disabled{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-theme:not(:disabled):not(.disabled).active,.btn-theme:not(:disabled):not(.disabled):active,.show>.btn-theme.dropdown-toggle{color:#fff;background-color:#352dc9;border-color:#322bbf}.btn-theme:not(:disabled):not(.disabled).active:focus,.btn-theme:not(:disabled):not(.disabled):active:focus,.show>.btn-theme.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(113,107,222,.5)}.btn-outline-theme{color:#5851d8;border-color:#5851d8}.btn-outline-theme:hover{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-outline-theme.focus,.btn-outline-theme:focus{box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.btn-outline-theme.disabled,.btn-outline-theme:disabled{color:#5851d8;background-color:transparent}.btn-outline-theme:not(:disabled):not(.disabled).active,.btn-outline-theme:not(:disabled):not(.disabled):active,.show>.btn-outline-theme.dropdown-toggle{color:#fff;background-color:#5851d8;border-color:#5851d8}.btn-outline-theme:not(:disabled):not(.disabled).active:focus,.btn-outline-theme:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-theme.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(88,81,216,.5)}.btn-theme-light{color:#fff;background-color:#817ae3;border-color:#817ae3}.btn-theme-light.focus,.btn-theme-light:focus,.btn-theme-light:hover{color:#fff;background-color:#635adc;border-color:#5950da}.btn-theme-light.focus,.btn-theme-light:focus{box-shadow:0 0 0 .2rem rgba(148,142,231,.5)}.btn-theme-light.disabled,.btn-theme-light:disabled{color:#fff;background-color:#817ae3;border-color:#817ae3}.btn-theme-light:not(:disabled):not(.disabled).active,.btn-theme-light:not(:disabled):not(.disabled):active,.show>.btn-theme-light.dropdown-toggle{color:#fff;background-color:#5950da;border-color:#4f45d8}.btn-theme-light:not(:disabled):not(.disabled).active:focus,.btn-theme-light:not(:disabled):not(.disabled):active:focus,.show>.btn-theme-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(148,142,231,.5)}.btn-rounded{border-radius:20px}.btn i{width:1.2em;text-align:left}.btn-icon{padding:.6rem;line-height:1em}.btn-icon i{text-align:center}.btn-xs{font-size:12px;padding:3px 10px}.btn-full{width:100%}.ladda-button{overflow:visible!important}.btn-info,.btn-info:hover,.btn-success,.btn-success:hover,.btn-warning,.btn-warning:hover{color:#fff}.btn-group .btn-group .dropdown-group .btn{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .btn-group .dropdown-group .btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:last-child) .dropdown-group .btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group .dropdown-group .btn{border-top-right-radius:0;border-top-left-radius:0}.btn-crater{width:148px;height:45px;border-radius:5px;font-family:poppins;font-weight:600;font-size:15px}.btn-crater .btn-label{margin:0}.btn-crater:focus{outline:10px auto #817ae3}.btn-crater:disabled{opacity:.5}.btn-crater-default{color:#fff;background:#5851d8;border:1px solid #5851d8}.btn-crater-default .icon-fa-spinner{color:#fff}.btn-crater-default:hover{background:#635bf2}.btn-crater-hollow{border:1px solid #5851d8;color:#5851d8;background:#fff}.btn-crater-hollow .icon-fa-spinner{color:#5851d8}.btn-crater-hollow:hover{opacity:.9;color:#5851d8}.form-control:focus{border-color:#ffde00;outline:0;box-shadow:0 0 0 .2rem rgba(255,222,0,.16)}.card{margin-bottom:1.5rem;border:none;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.card .card-header{position:relative;border-bottom:1px solid #ebf1fa}.card .card-header:after{display:block;clear:both;content:""}.card .card-header i{width:1.3em}.card .card-header h6{font-size:1rem;font-weight:400;margin:0}.card .card-header h3{font-size:1.25rem}.card .card-header h3,.card .card-header h5{font-weight:400;margin:0}.card .card-header.bg-dark{background-color:#55547a;color:#fff}.card .card-header .caption{display:inline-block;padding:8px 0}.card .card-header .actions{float:right;margin:auto}.card .card-body{padding:30px}.card .section-semi-title{font-size:1.1rem;text-transform:uppercase;font-weight:400}.card .card-footer{background-color:#fff}.card.with-tabs .card-header{padding:0}.card.with-tabs .card-header .caption{padding:20px}.card.with-tabs .card-header .actions{padding-right:20px}.card.with-tabs .card-header .nav-tabs{border-bottom:none}.card.with-tabs .card-header .nav-link{padding:1em 1.5em}.card .bg-danger h3,.card .bg-danger h5,.card .bg-danger h6,.card .bg-dark h3,.card .bg-dark h5,.card .bg-dark h6,.card .bg-info h3,.card .bg-info h5,.card .bg-info h6,.card .bg-primary h3,.card .bg-primary h5,.card .bg-primary h6,.card .bg-success h3,.card .bg-success h5,.card .bg-success h6,.card .bg-warning h3,.card .bg-warning h5,.card .bg-warning h6{color:#fff}@media (max-width:992px){.card .card-body{padding:15px}}.tabs .tab-content{margin-top:1.2rem}.tabs-default .nav-link.active,.tabs-default .nav-link.active:active,.tabs-default .nav-link.active:focus,.tabs-default .nav-link.active:hover{background-color:#55547a;color:#5851d8}.tabs-default .nav-link:hover{border:1px solid #55547a}.tabs-default .nav-tabs{border-bottom:1px solid #55547a}.tabs-primary .nav-link.active,.tabs-primary .nav-link.active:active,.tabs-primary .nav-link.active:focus,.tabs-primary .nav-link.active:hover{background-color:#5851d8;color:#fff}.tabs-primary .nav-link:hover{border:1px solid #5851d8}.tabs-primary .nav-tabs{border-bottom:1px solid #5851d8}.tabs-simple .nav-link{border:0;background-color:transparent;border-radius:0;color:#263b5e}.tabs-simple .nav-link:active,.tabs-simple .nav-link:focus,.tabs-simple .nav-link:hover{border-bottom:3px solid;border-color:#d0cef4}.tabs-simple .nav-link.active{background-color:transparent;border-bottom:3px solid #5851d8;color:#040405}.tabs-simple .nav-link.active:active,.tabs-simple .nav-link.active:focus,.tabs-simple .nav-link.active:hover{border-bottom:3px solid;border-color:#5851d8;color:#040405}.tabs-vertical:after{display:block;clear:both;content:""}.tabs-vertical .nav-tabs{float:left;border-right:1px solid #55547a;border-bottom:none;overflow:hidden;margin-right:1.2rem;display:block}.tabs-vertical .nav-tabs li{float:none;margin-right:-1px;margin-bottom:0}.tabs-vertical .nav-tabs li a{margin-right:0;border-radius:4px 0 0 4px;margin-bottom:.2rem;background-color:#fff;border-color:transparent #55547a transparent transparent}.tabs-vertical .nav-tabs li a:active,.tabs-vertical .nav-tabs li a:focus,.tabs-vertical .nav-tabs li a:hover{background-color:#fff;border-color:#55547a}.tabs-vertical .nav-tabs li a.active,.tabs-vertical .nav-tabs li a.active:active,.tabs-vertical .nav-tabs li a.active:focus,.tabs-vertical .nav-tabs li a.active:hover{background-color:#55547a;color:#5851d8}.tabs-vertical.tabs-primary .nav-tabs{border-right:1px solid #5851d8}.tabs-vertical.tabs-primary .nav-tabs li a{border-right-color:#5851d8}.tabs-vertical.tabs-primary .nav-tabs li a:active,.tabs-vertical.tabs-primary .nav-tabs li a:focus,.tabs-vertical.tabs-primary .nav-tabs li a:hover{background-color:#fff;border-color:#5851d8}.tabs-vertical.tabs-primary .nav-tabs li a.active,.tabs-vertical.tabs-primary .nav-tabs li a.active:active,.tabs-vertical.tabs-primary .nav-tabs li a.active:focus,.tabs-vertical.tabs-primary .nav-tabs li a.active:hover{background-color:#5851d8;color:#fff}.tabs-vertical.tabs-simple .nav-tabs{border-right:1px solid #ddd}.tabs-vertical.tabs-simple .nav-tabs li{margin:0}.tabs-vertical.tabs-simple .nav-tabs li a{background:transparent;border-right:3px solid transparent;border-radius:0}.tabs-vertical.tabs-simple .nav-tabs li a.active{border-bottom:0;color:#040405;border-right:3px solid #5851d8;background:transparent}.tabs-vertical.tabs-simple .nav-tabs li a:active,.tabs-vertical.tabs-simple .nav-tabs li a:focus,.tabs-vertical.tabs-simple .nav-tabs li a:hover{background-color:transparent;border-right:3px solid #5851d8;border-bottom:0}.panel{background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel .panel-heading a{text-decoration:none}.panel .panel-title{display:block;padding:1rem 1.25rem}.panel .panel-content{padding:0 1.25rem}.panel-group .panel+.panel{margin-top:10px}.tabs{width:100%;padding-left:0;display:flex;align-items:center;list-style:none;border-bottom:2px solid #ebf1fa}.tab{display:block;padding:10px 30px;font-style:normal;font-size:14px;line-height:21px;position:relative;white-space:nowrap;cursor:pointer}.tab,.tab .tab-link{color:#a5acc1}.tab:after{width:100%;background:#a5acc1;position:absolute;content:"";bottom:-2px;left:0;height:3px;opacity:0;transition:.3s}.tab:hover:after{display:block;content:"";opacity:1}.tab .a-active{font-weight:500;color:#263b5e!important}.tab .a-active:after,.tab .router-link-exact-active.active:after{height:3px;display:block;width:100%;background:#5851d8;position:absolute;content:"";bottom:-2px;left:0}.tab .router-link-exact-active.active{font-weight:500;color:#263b5e!important}.table td,.table th{color:#040405;font-weight:300;border-top:none;font-size:15px;vertical-align:middle}.table td{border-right:0;border-left:0}.table th{text-transform:uppercase;white-space:nowrap;font-size:14px;font-weight:500;position:relative;color:#263b5e;letter-spacing:.3px}.table .table__actions{display:flex}.table .table__actions .btn{padding:2px .5rem}.table .table__actions a:not(:last-child){border-right:1px solid #d9d9d9;margin-right:8px;padding-right:8px}.table thead th{border:0;top:25px}.table .table-component__table__body,.table thead th{position:relative}.table .table-component__table__body tr:first-child td{border-top:0}.table .table-component__table__body tr{border-radius:10px;transition:all .2s ease-in-out}.table .table-component__table__body tr:hover{box-shadow:0 5px 15px 2px rgba(0,0,0,.03)}.table .table-component__table__body td{font-size:15px;padding:25px 15px;height:80px;background:#fff}.table .table-component__table__body td:first-child{border-top-left-radius:10px;border-bottom-left-radius:10px}.table .table-component__table__body td:last-child{border-top-right-radius:10px;border-bottom-right-radius:10px}.table td.primary{font-weight:400;font-size:16px}.table .action-dropdown .dropdown-container{margin:10px 5px 0 0;box-shadow:0 1px 3px rgba(0,0,0,.1);border:none}.table .action-dropdown .dropdown-item{justify-content:space-between;color:#040405;padding:10px 20px}.card-body .table{margin-top:-10px}.card-body .table th{border-top:none}.table-component{display:flex;flex-direction:column;position:relative;margin-top:-25px;min-height:300px}.table-component__filter{align-self:flex-end;position:relative}.table-component__filter__field{padding:.15em 1.25em .15em .75em;border:1px solid #e0e0e0;font-size:15px;border-radius:3px}.table-component__filter__clear{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:2em;color:#007593;font-weight:700;cursor:pointer}.table-component__filter__field:focus{outline:0;border-color:#5851d8}.table-component__table-wrapper{width:100%}.table-component__table{min-width:100%;border-collapse:separate;table-layout:auto;margin-bottom:0;border-spacing:0 15px}.table-component__table__caption{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.table-component__table td,.table-component__table th{padding:.75em 1.25em;vertical-align:top;text-align:left}.table-component__message{color:#999;text-align:center;padding-top:10px}.table-component__th--sort,.table-component__th--sort-asc,.table-component__th--sort-desc{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.table-component__th--sort-asc:after,.table-component__th--sort-desc:after{position:absolute;left:.25em;display:inline-block;color:#bbb}.table-component__th--sort-asc:after{content:"\2191"}.table-component__th--sort-desc:after{content:"\2193"}.table-component .pagination{justify-content:flex-end!important;margin-top:10px}.table-component .pagination .page-item{overflow:hidden}.table-component .pagination .page-item.active .page-link{color:#fff!important}.table-component .pagination a i{display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;background-color:#fff;border:1px solid #dee2e6;font-style:normal;cursor:pointer}.table-component .pagination a.disabled i{color:#d9d9d9;pointer-events:none;cursor:auto}table.full-width{width:100%}.table-actions{display:flex;align-items:center;justify-content:space-between;list-style:none;border-bottom:2px solid #ebf1fa;height:40px;position:relative}.table-actions .table-actions-button{display:block;font-weight:500;cursor:pointer;color:#817ae3;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.table-actions .table-actions-button:after{vertical-align:.1em}.table-actions .dropdown-group.active .dropdown-container{z-index:10}.table-actions .table-stats{margin:0}.selectall{position:absolute;cursor:pointer;top:47px;left:35px;z-index:10}.table-component td>span:first-child{background:#ebf1fa;color:#55547a;display:none;font-size:10px;font-weight:700;padding:5px;left:0;position:absolute;text-transform:uppercase;top:0}.select-all-label{display:none!important}@media (max-width:768px){.select-all-label{display:inline!important;color:#55547a;cursor:pointer}.selectall{top:20px}.table-component .dropdown-group{position:absolute;visibility:visible;top:15px;right:10px}.table-component thead{left:-9999px;position:absolute;visibility:hidden}.table-component tr{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:50px;position:relative}.table-component td{margin:0 -1px -1px 0;padding-top:40px!important;position:relative;width:50%;left:0;border:1px solid #ebf1fa!important}.table-component td:not(:first-child){text-align:center!important}.table-component td:first-child{display:flex;justify-content:space-between;flex:1 100%;height:50px;padding-top:25px!important;align-items:center;border-bottom-left-radius:0!important;border-top-left-radius:5px!important;border-top-right-radius:5px!important}.table-component td:last-child{position:unset;visibility:hidden;height:0!important;padding:0!important}.table-component td:nth-last-child(3){border-bottom-left-radius:5px!important}.table-component td:nth-last-child(2){border-bottom-right-radius:5px!important}.table-component td>span:first-child{display:block}.table-component .dropdown-container{right:0;left:120px}}.hamburger{display:inline-block;cursor:pointer;transition-property:opacity,-webkit-filter;transition-property:opacity,filter;transition-property:opacity,filter,-webkit-filter;transition-duration:.15s;transition-timing-function:linear;font:inherit;color:inherit;text-transform:none;background-color:transparent;border:0;margin:0;overflow:visible}.hamburger-box{width:24px;height:24px;display:inline-block;position:relative}.hamburger-inner{display:block;top:50%;left:4.5px;right:4.5px;margin-top:-2px}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{height:2px;background-color:#fff;border-radius:2px;position:absolute;transition-property:transform;transition-duration:.15s;transition-timing-function:ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block;width:100%}.hamburger-inner:before{top:-5px}.hamburger-inner:after{bottom:-5px}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(3px,1px,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(3px,-1px,0) rotate(-45deg) scaleX(.7)}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-active{opacity:0}.gauge{display:flex;align-items:center}.gauge-lg .basic-gauge,.gauge-lg .color-gauge,.gauge-lg .donut-gauge{height:250px}.gauge-lg .gauge-label{font-size:40px}.gauge-md .basic-gauge,.gauge-md .color-gauge,.gauge-md .donut-gauge{height:180px}.gauge-sm .basic-gauge,.gauge-sm .color-gauge,.gauge-sm .donut-gauge{height:120px}.gauge-sm .gauge-label{font-size:20px}.gauge-label{display:inline-block;position:absolute;top:60%;left:0;width:100%;text-align:center;font-size:28px;font-weight:700}.gauge-label.middle-label{top:50%;transform:translateY(-50%)}.gauge{position:relative}@media (max-width:480px){.gauge-lg .basic-gauge,.gauge-lg .color-gauge,.gauge-lg .donut-gauge{height:180px!important;width:auto!important}.gauge-lg .gauge-label{font-size:28px}}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#2a249f;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}.pace .pace-progress-inner{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #352dc9,0 0 5px #352dc9;opacity:1;transform:rotate(3deg) translateY(-4px)}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:15px;right:15px;width:14px;height:14px;border-color:#352dc9 transparent transparent #352dc9;border-style:solid;border-width:2px;border-radius:10px;-webkit-animation:pace-spinner .4s linear infinite;animation:pace-spinner .4s linear infinite}@-webkit-keyframes pace-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pace-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.vue-tabs-demo .card-body .default .tabs-component .tabs-component-tabs{padding-left:0}.vue-tabs-demo .card-body .default .suffix{background-color:#c03;color:#fff;margin-left:.35em}.vue-tabs-demo .card-body .default .prefix{background-color:#d1e8eb;color:#0c5174;margin-right:.35em}.vue-tabs-demo .card-body .default .prefix,.vue-tabs-demo .card-body .default .suffix{align-items:center;border-radius:1.25rem;display:flex;font-size:.75rem;flex-shrink:0;height:1.25rem;justify-content:center;line-height:1.25rem;min-width:1.25rem;padding:0 .1em}.vue-tabs-demo .card-body .default .tabs-component{margin:2em 0}.vue-tabs-demo .card-body .default .page-subtitle{font-size:1.25rem;margin-bottom:1em;padding-top:.25em}.suffix{position:absolute;right:-.725em;top:-.725em}.tabs-component{margin:0!important}.tabs-component.tabs-default .tabs-component-tabs{padding:0}.tabs-component.tabs-default .tabs-component-tab{border:none;background-color:none;border-radius:none;margin-right:.1rem!important;transform:none;transition:none;margin:0;border:1px solid transparent}.tabs-component.tabs-default .tabs-component-tab a{padding:.75em 2rem!important;color:#333;font-weight:400}.tabs-component.tabs-default .tabs-component-tab a:hover{color:#333;text-decoration:none}.tabs-component.tabs-default .tabs-component-tab.is-active{border:1px solid #333;background:#333;color:#ffde00}.tabs-component.tabs-default .tabs-component-tab.is-active a{color:#ffde00}.tabs-component.tabs-default .tabs-component-tab:hover{border:1px solid #333}.tabs-component.tabs-default .tabs-component-panels{border-top:1px solid #333!important;border:none;position:relative;border-radius:0;padding:1em 0!important;box-shadow:none}.tabs-component.tabs-default.primary .tabs-component-tab a{color:#333}.tabs-component.tabs-default.primary .tabs-component-tab.is-active{border:1px solid #007dcc;background:#007dcc;color:#fff}.tabs-component.tabs-default.primary .tabs-component-tab.is-active a{color:#fff}.tabs-component.tabs-default.primary .tabs-component-tab:hover{border:1px solid #007dcc}.tabs-component.tabs-default.primary .tabs-component-panels{border-top:1px solid #007dcc!important}.tabs-component.tabs-vertical{display:flex!important}.tabs-component.tabs-vertical .tabs-component-tabs{display:inline-block!important;border-right:1px solid #333!important;border-radius:0;padding:0}.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab{border:none;background-color:none;border-radius:4px 0 0 4px;margin-bottom:.2rem!important;transform:none;transition:none;margin:0;border:1px solid transparent;border-right:0}.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a{padding:.75em 2rem!important;color:#333;font-weight:400}.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a:hover{color:#333;text-decoration:none}.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active{border:1px solid transparent;border-right:0;background:#333}.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active a{color:#ffde00}.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab:hover{border:1px solid #333;border-right:0}.tabs-component.tabs-vertical .tabs-component-panels{border:none;position:relative;border-radius:0;padding:0 0 0 2em!important;box-shadow:none}.tabs-component.tabs-vertical.primary .tabs-component-tabs{border-right:1px solid #007dcc!important}.tabs-component.tabs-vertical.primary .tabs-component-tabs .tabs-component-tab.is-active{background:#007dcc;color:#fff}.tabs-component.tabs-vertical.primary .tabs-component-tabs .tabs-component-tab.is-active a{color:#fff}.tabs-component.tabs-vertical.primary .tabs-component-tabs .tabs-component-tab:hover{border:1px solid #007dcc;border-right:0}.tabs-component.tabs-simple .tabs-component-tabs{padding:0}.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab{border:none;background-color:none;border-radius:none;transform:none;transition:none;margin:0}.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a{padding:.75em 2rem!important;color:#333}.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a:hover{color:#333;outline:none;border-bottom:3px solid #fff299}.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active{border-bottom:3px solid #ffde00;color:#333}.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active a:hover{border-bottom:none}.tabs-component.tabs-simple .tabs-component-panels{border-top:1px solid #ddd!important;border:none;position:relative;border-radius:0;padding:1em 0!important;box-shadow:none}.tabs-component.tabs-simple-vertical{display:flex!important}.tabs-component.tabs-simple-vertical .tabs-component-tabs{padding:0;display:inline-block!important;border-bottom:none;border-right:1px solid #ddd!important;border-radius:0}.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab{border:none;background-color:none;border-radius:none;transform:none;transition:none;margin:0}.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a{padding:.75em 2rem!important;color:#333;border-right:3px solid transparent;background:transparent}.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a:hover{background-color:transparent;border-right:3px solid #fff299;border-radius:0}.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab.is-active{border-right:3px solid #ffde00;color:#333}.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab.is-active a:hover{border-color:transparent}.tabs-component.tabs-simple-vertical .tabs-component-panels{border:none;position:relative;border-radius:0;padding:0 0 0 2em!important;box-shadow:none}.tabs-component-tabs{border:none!important}.dropdown-group{position:relative}.dropdown-group.active .dropdown-container{display:block}.dropdown-group .dropdown-container{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem;margin:.125rem 0 0 .125rem;font-size:1rem;color:#fff;text-align:left;list-style:none;background-color:#040405;background-clip:padding-box;border-radius:.25rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)!important;border:none}.dropdown-group .dropdown-container.align-right{right:0;left:auto}.dropdown-group .dropdown-container .dropdown-group{display:block;margin:0}.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item{display:block;font-size:15px;padding:8px 12px;font-weight:300;color:#040405;background-color:transparent;border-radius:5px}.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item:hover{background-color:#ebf1fa}.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item.active{color:#5851d8}.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item i{color:#a5acc1;margin-right:5px}.dropdown-group .dropdown-container .dropdown-activator{position:relative}.dropdown-group .dropdown-container .dropdown-activator:after{content:none!important}.dropdown-group .dropdown-container .dropdown-activator:before{border-color:#fff transparent transparent;border-style:solid;border-width:5px 4px 0;content:"";display:block;height:0;position:absolute;right:10px;top:18px;transition:all .2s ease-in-out;width:0;transform:rotate(90deg)}.dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator a{color:#5851d8}.dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator:before{transform:rotate(-90deg);border-color:#5851d8 transparent transparent}.dropdown-group .dropdown-container .dropdown-container{display:block;left:100%;top:0;position:absolute;margin:.125rem .125rem 0}.dropdown-group .dropdown-container .dropdown-container.align-right{right:100%;left:auto}.dropdown-group .dropdown-container .dropdon-group-item{position:relative}.dropdown-group .dropdown-item-divider{border-top:1px solid #fff;height:1px;margin:.5rem 0;overflow:hidden}.dropdown-group.dropdown-light .dropdown-container{color:#040405;background-color:#fff;border:1px solid #c3c8d6}.dropdown-group.dropdown-light .dropdown-container .dropdown-group-item a{color:#040405}.dropdown-group.dropdown-light .dropdown-container .dropdown-group-item a.active{color:#040405;background-color:#cfd4df}.dropdown-group.dropdown-light .dropdown-container .dropdown-group-item a:hover{background-color:#cfd4df}.dropdown-group.dropdown-light .dropdown-container .dropdown-activator:before{border-color:#a5acc1 transparent transparent}.dropdown-group.dropdown-light .dropdown-container .dropdown-group.active .dropdown-activator a{color:#040405;background-color:#cfd4df}.dropdown-group.dropdown-light .dropdown-container .dropdown-group.active .dropdown-activator:before{border-color:#a5acc1 transparent transparent}.dropdown-group.dropdown-light .dropdown-item-divider{border-top:1px solid #040405}.dropdown-item .dropdown-item-icon{width:20px;height:14px;margin-right:6px;color:#55547a}.action{position:absolute;right:0;z-index:1}.action .action-btn{color:#5851d8;background:transparent;border:none}.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover,.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover,.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover{border:1px solid #5851d8!important}.vdp-datepicker__calendar .cell.selected{background:#5851d8!important}.vdp-datepicker__calendar .cell.highlighted{background:#bcb9ef!important}fieldset[disabled] .multiselect{pointer-events:none}.in-valid{border:1px solid #fb7178!important}.multiselect__spinner{position:absolute;right:1px;top:1px;width:48px;height:35px;background:#fff;display:block}.multiselect__spinner:after,.multiselect__spinner:before{position:absolute;content:"";top:50%;left:50%;margin:-8px 0 0 -8px;z-index:5;width:16px;height:16px;border-radius:100%;border:2px solid transparent;border-top-color:#41b883;box-shadow:0 0 0 1px transparent}.multiselect__spinner:before{-webkit-animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__spinner:after{-webkit-animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__loading-enter-active,.multiselect__loading-leave-active{transition:opacity .4s ease-in-out;opacity:1}.multiselect__loading-enter,.multiselect__loading-leave-active{opacity:0}.multiselect,.multiselect__input,.multiselect__single{font-family:inherit;font-size:14px;touch-action:manipulation}.multiselect{box-sizing:content-box;display:block;position:relative;width:100%;min-height:40px;text-align:left;color:#35495e}.multiselect *{box-sizing:border-box}.multiselect:focus{border:1px solid #817ae3!important}.multiselect--disabled{pointer-events:none;opacity:.6}.multiselect--active{z-index:50}.multiselect--active:not(.multiselect--above) .multiselect__current,.multiselect--active:not(.multiselect--above) .multiselect__input,.multiselect--active:not(.multiselect--above) .multiselect__tags{border-bottom-left-radius:0;border-bottom-right-radius:0}.multiselect--active .multiselect__select{transform:rotate(180deg)}.multiselect--above.multiselect--active .multiselect__current,.multiselect--above.multiselect--active .multiselect__input,.multiselect--above.multiselect--active .multiselect__tags{border-top-left-radius:0;border-top-right-radius:0}.multiselect__input,.multiselect__single{position:relative;display:inline-block;min-height:20px;line-height:20px;border:none;border-radius:5px;background:#fff;padding:0 0 0 5px;width:100%;transition:border .1s ease;box-sizing:border-box;vertical-align:top}.multiselect__input::-webkit-input-placeholder{color:#b9c1d1}.multiselect__input::-moz-placeholder{color:#b9c1d1}.multiselect__input:-ms-input-placeholder{color:#b9c1d1}.multiselect__input::-ms-input-placeholder{color:#b9c1d1}.multiselect__input::placeholder{color:#b9c1d1}.multiselect__tag~.multiselect__input,.multiselect__tag~.multiselect__single{width:auto}.multiselect__input:hover,.multiselect__single:hover{border-color:#cfcfcf}.multiselect__input:focus,.multiselect__single:focus{border-color:#a8a8a8;outline:none}.multiselect__single{padding-left:5px;margin-bottom:8px}.multiselect__tags-wrap{display:inline}.multiselect__tags{min-height:40px;display:block;padding:8px 40px 0 8px;border-radius:5px;border:1px solid #ebf1fa;background:#fff;font-size:14px}.multiselect__tag{position:relative;display:inline-block;padding:4px 26px 4px 10px;border-radius:5px;margin-right:10px;color:#fff;line-height:1;background:#41b883;margin-bottom:5px;white-space:nowrap;overflow:hidden;max-width:100%;text-overflow:ellipsis}.multiselect__tag-icon{cursor:pointer;margin-left:7px;position:absolute;right:0;top:0;bottom:0;font-weight:700;font-style:normal;width:22px;text-align:center;line-height:22px;transition:all .2s ease;border-radius:5px}.multiselect__tag-icon:after{content:"\D7";color:#266d4d;font-size:14px}.multiselect__tag-icon:focus,.multiselect__tag-icon:hover{background:#369a6e}.multiselect__tag-icon:focus:after,.multiselect__tag-icon:hover:after{color:#fff}.multiselect__current{line-height:16px;min-height:40px;overflow:hidden;padding:8px 30px 0 12px;white-space:nowrap;border-radius:5px;border:1px solid #ebf1fa}.multiselect__current,.multiselect__select{box-sizing:border-box;display:block;margin:0;text-decoration:none;cursor:pointer}.multiselect__select{line-height:20px;position:absolute;width:30px;height:40px;right:1px;top:1px;padding:4px 8px;text-align:center;transition:transform .2s}.multiselect__select:before{position:relative;right:0;top:65%;color:#a5acc1;margin-top:4px;border-color:#a5acc1 transparent transparent;border-style:solid;border-width:5px 5px 0;content:""}.multiselect__placeholder{color:#b9c1d1;display:inline-block;margin-bottom:10px;padding-top:2px}.multiselect--active .multiselect__placeholder{display:none}.multiselect__content-wrapper{position:absolute;display:block;background:#fff;width:100%;max-height:240px;overflow:auto;border:1px solid #ebf1fa;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;z-index:50;-webkit-overflow-scrolling:touch}.multiselect__content{list-style:none;display:inline-block;padding:0;margin:0;min-width:100%;vertical-align:top}.multiselect--above .multiselect__content-wrapper{bottom:100%;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom:none;border-top:1px solid #e8e8e8}.multiselect__content::webkit-scrollbar{display:none}.multiselect__element{display:block}.multiselect__option{display:block;padding:12px;min-height:40px;line-height:16px;text-decoration:none;text-transform:none;vertical-align:middle;position:relative;cursor:pointer;white-space:nowrap}.multiselect__option:after{top:0;right:0;position:absolute;line-height:40px;padding-right:12px;padding-left:20px;font-size:13px}.multiselect__option--highlight{background:#41b883;outline:none;color:#fff}.multiselect__option--highlight:after{content:attr(data-select);background:#41b883;color:#fff}.multiselect__option--selected{background:#f3f3f3;color:#35495e;font-weight:700}.multiselect__option--selected:after{content:attr(data-selected);color:silver}.multiselect__option--selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect--disabled .multiselect__current,.multiselect--disabled .multiselect__input,.multiselect--disabled .multiselect__select,.multiselect--disabled .multiselect__single,.multiselect--disabled .multiselect__tags{background:#ebf1fa;color:#b9c1d1}.multiselect__option--disabled{background:transparent!important;color:#ddd!important;cursor:text;pointer-events:none}.multiselect__option--group{background:#ededed;color:#35495e}.multiselect__option--group.multiselect__option--highlight{background:#35495e;color:#fff}.multiselect__option--group.multiselect__option--highlight:after{background:#35495e}.multiselect__option--disabled.multiselect__option--highlight{background:#dedede}.multiselect__option--group-selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--group-selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect-enter-active,.multiselect-leave-active{transition:all .15s ease}.multiselect-enter,.multiselect-leave-active{opacity:0}.multiselect__strong{margin-bottom:8px;line-height:20px;display:inline-block;vertical-align:top}[dir=rtl] .multiselect{text-align:right}[dir=rtl] .multiselect__select{right:auto;left:1px}[dir=rtl] .multiselect__tags{padding:8px 8px 0 40px}[dir=rtl] .multiselect__content{text-align:right}[dir=rtl] .multiselect__option:after{right:auto;left:0}[dir=rtl] .multiselect__clear{right:auto;left:12px}[dir=rtl] .multiselect__spinner{right:auto;left:1px}@-webkit-keyframes spinning{0%{transform:rotate(0)}to{transform:rotate(2turn)}}@keyframes spinning{0%{transform:rotate(0)}to{transform:rotate(2turn)}}.multiselect .multiselect__option--highlight{background:#5851d8;color:#040405;font-weight:400!important}.multiselect .multiselect__option--highlight.multiselect__option--selected{background:#ebf1fa;color:#040405;font-size:1rem;font-weight:400!important}.multiselect .multiselect__option--highlight.multiselect__option--selected:after,.multiselect .multiselect__option--highlight:after{background:#040405;color:#fff}.multiselect .multiselect__option--selected{font-weight:400!important;background:#ebf1fa}.multiselect .multiselect__tags-wrap .multiselect__tag{background:#5851d8;color:#040405}.multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon:hover{background:#5851d8}.multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon:after{color:#040405}.multiselect.error{border:1px solid #fb7178;border-radius:5px}.customer-select label{cursor:pointer}.customer-select .main{display:flex;flex-direction:column;width:100%}.customer-select .main .search-bar{display:flex;padding:15px 15px 5px}.customer-select .main .search-bar .search-icon{color:#b9c1d1;font-size:14px;font-weight:900;margin:4px 0 0}.customer-select .main .no-data-label{display:flex;justify-content:center;color:#b9c1d1;padding:20px}.customer-select .main .no-data-label label{margin:0}.customer-select .list{display:flex;flex-direction:column;position:relative;overflow:auto;max-height:173px;min-height:173px}.customer-select .list .list-item{display:flex;padding:10px 23px;border-bottom:1px solid rgba(185,193,209,.41);cursor:pointer}.customer-select .list .avatar{width:35px;height:35px;background:#b9c1d1;border-radius:50%;margin:1px 21px 0 0;display:flex;justify-content:center;align-items:center;font-weight:600;font-size:16px;line-height:24px;color:#fff}.customer-select .list .name{display:flex;flex-direction:column;justify-content:center}.customer-select .list .name .title{font-size:16px;font-family:Poppins;margin:0;line-height:1.2}.customer-select .list .name .sub-title{font-family:Poppins;font-weight:500;font-size:12px;color:#a5acc1;letter-spacing:.5px;margin:0}.customer-select .list .list-item:last-child{border:none}.customer-select .list .list-item:hover{background:#f9fbff;cursor:pointer}.item-select .main-section{display:flex;flex-direction:column;width:100%;padding:15px 15px 0}.item-select .main-section .search-bar{display:flex;position:relative;width:100%}.item-select .main-section .no-data-label{display:flex;justify-content:center;color:#b9c1d1;padding:20px}.item-select .main-section .no-data-label label{margin:0}.item-select .list{display:flex;flex-direction:column;position:relative;overflow:auto}.item-select .list .list-item{display:flex;justify-content:space-between;padding:16px 23px;max-height:56px;border-bottom:1px solid rgba(185,193,209,.41);cursor:pointer}.item-select .list .list-item .price,.item-select .list .list-item .title{font-size:16px;color:#000;cursor:pointer}.item-select .list .list-item:last-child{border:none}.item-select .list .list-item:hover{background:#f9fbff}.tax-select .main-section{display:flex;flex-direction:column;width:100%;padding:15px 15px 0}.tax-select .search-bar{display:flex;position:relative;width:100%}.tax-select .no-data-label{display:flex;justify-content:center;color:#b9c1d1;padding:20px}.tax-select .no-data-label label{margin:0}.tax-select .list{display:flex;flex-direction:column;position:relative;overflow:auto;max-height:112px}.tax-select .list .list-item{display:flex;justify-content:space-between;padding:16px;max-height:56px;border-bottom:1px solid rgba(185,193,209,.41);cursor:pointer}.tax-select .list .list-item label{font-size:16px;margin:0;font-weight:400;color:#262630;line-height:1.2;display:inline-block;cursor:pointer}.tax-select .list .list-item:last-child{border:none}.tax-select .list .list-item:hover{background:#f9fbff;cursor:pointer}.tax-select .list .item-disabled{background:#f9fbff;cursor:not-allowed!important;opacity:.5;z-index:-10;pointer-events:none!important}.image-upload-box{height:110px;padding:20px;background-color:transparent;border:2px dashed #ebf1fa;border-radius:5px;display:flex;justify-content:center;align-items:center;position:relative;cursor:pointer}.image-upload-box .preview-logo{max-height:80%;position:absolute;opacity:1;-webkit-animation:fadeIn 2s ease;animation:fadeIn 2s ease}.image-upload-box .upload-content{display:flex;flex-direction:column;align-items:center}.image-upload-box .upload-text{font-size:12px;line-height:18px;text-align:center;color:#b9c1d1}.image-upload-box .upload-icon{font-size:20px;line-height:23px;color:#b9c1d1;margin-bottom:10px}.image-upload-box .white-icon{font-size:30px;line-height:23px;color:#fff;margin-bottom:10px}.image-upload-box .overlay{position:absolute;display:flex;justify-content:center;align-items:center;top:0;left:0;width:100%;height:100%;z-index:10;transition:.5s ease;background-color:rgba(0,0,0,.5);opacity:0}.image-upload-box:hover .overlay{opacity:1}.avatar-upload{height:130px;width:130px}.avatar-upload .preview-logo{max-width:80%!important}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.payment-modes-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.payment-modes-modal .input-label{text-align:end;padding-right:0;position:relative}.payment-modes-modal .required{position:absolute;color:#fb7178}.payment-modes-modal .compound-tax-toggle{display:flex;align-items:center;margin-top:9px}@media (max-width:480px){.base-modal .payment-modes-modal-modal{width:100vw}.base-modal .payment-modes-modal-modal .input-label{text-align:left}}.item-unit-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.item-unit-modal .input-label{text-align:end;padding-right:0;position:relative}.item-unit-modal .required{position:absolute;color:#fb7178}.item-unit-modal .compound-tax-toggle{display:flex;align-items:center;margin-top:9px}@media (max-width:480px){.base-modal .item-unit-modal{width:100vw}.base-modal .item-unit-modal .input-label{text-align:left}}.mail-test-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.mail-test-modal .input-label{text-align:end;padding-right:0;position:relative}.mail-test-modal .required{position:absolute;margin-left:4px;color:#fb7178}.mail-test-modal .compound-tax-toggle{display:flex;align-items:center;margin-top:9px}@media (max-width:480px){.base-modal .mail-test-modal{width:100vw}.base-modal .mail-test-modal .input-label{text-align:left}}.base-modal{position:fixed;width:100%;height:100%;background:rgba(4,4,5,.1);z-index:10001;display:flex;align-items:center;justify-content:center}.base-modal .modal-header{display:flex;justify-content:space-between;height:70px;border-bottom:1px solid #ebf1fa;padding:30px 30px 20px!important}.base-modal .modal-header:before{content:"";position:absolute;width:100%;top:0;left:0;height:10px;background:#5851d8}.base-modal .modal-header .modal-heading{font-size:17.5px;font-weight:500;margin:0}.base-modal .modal-body{background:#fff;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);position:relative;max-width:600px;border:none;border-radius:10px;overflow:hidden;padding:0}.base-modal.size-lg .modal-body{max-width:800px}.base-modal.size-sm .modal-body{max-width:400px}.base-modal .close-icon{position:absolute;padding:6px;top:23px;right:15px;display:flex;justify-content:center;align-content:center;width:20px;cursor:pointer}@media (max-width:480px){.base-modal .modal-body{height:100%;overflow:scroll;border-radius:0}}.base-modal .modal-body{overflow:visible!important}.item-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.item-modal .col-form-label{text-align:end;padding-right:0;position:relative}.item-modal .required{position:absolute;right:-10px;color:#fb7178}@media (max-width:480px){.base-modal .item-modal .input-label{text-align:left}.base-modal .item-modal .input-label .item-modal{width:100vw}.base-modal .item-modal .input-label .item-modal .input-label{text-align:left}.base-modal .item-modal .input-label .required{position:absolute;right:auto;margin-left:5px;color:#fb7178}}.template-modal .template-container{display:flex;justify-content:flex-start;overflow-x:auto;flex-wrap:wrap;padding:5px}.template-modal .template-img{margin:12px;border:1px solid #ebf1fa}.template-modal .selected-template{border:1px solid #5851d8;position:relative}.template-modal .check-icon{width:20px;height:20px;position:absolute;color:#5851d8;top:-6px;right:-5px;z-index:10}.template-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.template-modal .card-footer .btn-crater{margin-left:15px}@media (max-width:480px){.base-modal .template-modal{width:100vw}.base-modal .template-modal .template-container{justify-content:center}}.customer-modal .card-body{padding-bottom:4px}.customer-modal .col-form-label{text-align:end;font-family:poppins,sans-serif;padding-right:0;font-size:14px;position:relative}.customer-modal .required{position:absolute;color:#fb7178;right:-10px}.customer-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.customer-modal .card-footer .btn-crater{margin-left:15px}.customer-modal .copy-address-button{display:flex;justify-content:flex-end}@media (max-width:480px){.base-modal .customer-modal{width:100vw}.base-modal .customer-modal .required{position:relative}.base-modal .customer-modal .input-label{text-align:left}}.tax-type-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.tax-type-modal .input-label{text-align:end;padding-right:0;position:relative}.tax-type-modal .required{position:absolute;left:-10px;color:#fb7178}.tax-type-modal .compound-tax-toggle{display:flex;align-items:center;margin-top:9px}@media (max-width:480px){.base-modal .tax-type-modal{width:100vw}.base-modal .tax-type-modal .input-label{text-align:left}}.category-modal .card-footer{display:flex;justify-content:flex-end;padding:20px}.category-modal .col-form-label{text-align:end;padding-right:0;position:relative}.category-modal .required{position:absolute;right:-10px;color:#fb7178}@media (max-width:480px){.base-modal .category-modal .input-label{text-align:left}}.dashboard .dashboard-table .table-component .dashboard-recent-invoice-options .dropdown-container{margin:10px 5px 0 -75px}.dashbox{background-color:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:4px;margin-bottom:30px;padding:20px;position:relative;display:flex;justify-content:space-between}.dashbox i{font-size:30px;left:40px;position:absolute;top:53px}.dashbox .title{color:#a5acc1;display:block;font-size:17.5px;line-height:21px;margin-top:5px}.dashbox .amount{color:#040405;font-weight:600;font-size:28px;line-height:34px}.dashbox:active,.dashbox:focus,.dashbox:hover{text-decoration:none;background-color:#f9fbff}.dash-item{flex:3;padding:0 15px}.dash-item:first-child{flex:5}.dashboard-card .card-header{border:none!important;margin-bottom:30px;display:flex;justify-content:space-between;align-items:center;padding:0 0 0 10px}.dashboard-card .card-header h6{font-weight:500;font-size:17.5px;line-height:21px;letter-spacing:.1px;flex:1}.dashboard-card .card-header .year-selector{height:50px;width:150px}.graph-body{display:flex!important}.graph-body .chart-desc{border-left:1px solid #ebf1fa;padding:0}.graph-body .stats{text-align:right;display:flex;flex-direction:column;height:100%}.graph-body .stats .description{padding-top:30px;flex:1}.graph-body .stats .description:last-child{border-top:1px solid #ebf1fa;padding-top:30px}.graph-body .stats .title{font-size:14px;line-height:21px;letter-spacing:.01em;padding-right:25px}.graph-body .stats .total{display:block;margin-top:6px;font-weight:600;font-size:24.5px;line-height:29px;padding-right:25px}.table-row{margin-top:20px}.table-row .table-header{display:flex;justify-content:space-between;position:relative;align-items:center;z-index:1;margin-bottom:10px}.table-row .table-header .table-title{font-weight:600;font-size:21px;line-height:25px;margin-bottom:0}.dashbox-line-progress{padding:30px;text-align:left}.dashbox-line-progress i{right:30px;left:auto;top:30px}.dashbox-line-progress .progress{height:.5rem;margin-bottom:0;background-color:#ebf1fa}.dashbox-line-progress .title{margin-bottom:15px;font-size:26px}.dashbox-circle-progress{text-align:left;padding:30px}.dashbox-circle-progress .easy-pie-chart{position:absolute;right:30px;top:50%;transform:translateY(-50%)}@media (min-width:1200px) and (max-width:1400px){.dashbox{padding:15px}.dashbox i{left:30px;top:25px}.dashbox.dashbox-line-progress i{right:15px;left:auto;top:15px}.dashbox-circle-progress{padding:30px}}@media (max-width:1200px){.dashbox{padding:12px}.dashbox .title{font-size:14px;line-height:16px;margin-top:3px}.dashbox .amount{font-weight:500;font-size:24px;line-height:30px}.graph-body{display:block!important}.graph-body .stats{flex-direction:row;flex-wrap:wrap;text-align:center;border-top:1px solid #ebf1fa}.graph-body .stats .total{padding-right:0}.graph-body .stats .description{padding:30px 25px}.graph-body .stats .description:last-child{border-top:none;padding-top:30px;border-left:1px solid #ebf1fa}}@media (max-width:992px){.dashbox .icon .card-icon{height:40px;width:40px}.dashboard-card .card-header{margin-bottom:20px}.dashboard-card .card-header .year-selector{height:40px}.dashboard-card .card-header{padding-left:0}.dashboard-card .card-header h6{font-size:16px;line-height:19px;letter-spacing:0}.dash-item{flex:3px;padding:0 15px}.dash-item:nth-child(2n),.dash-item:nth-child(odd){padding:0 15px;flex:100%}.graph-body .stats .title{font-size:12px;line-height:12px;padding-right:0}.graph-body .stats .total{display:block;margin-top:3px;font-weight:600;font-size:16px;line-height:1.2}.graph-body .stats .description{padding:10px}.graph-body .stats .description:last-child{padding:10px;flex:100%;border-top:1px solid #ebf1fa}.graph-body .stats .description:last-child .title{padding-right:0}.table-row .mob-table{margin-top:25px!important}}.card.with-tabs .tabs-component .tabs-component-tabs{position:absolute;right:1.25rem;top:14px}.card.with-tabs .tabs-component .tabs-component-panels{border:0!important}@media (max-width:768px){.card.with-tabs .tabs-component .tabs-component-tabs{position:relative;display:block;margin-right:-41px;border-radius:0;top:-21px;margin-left:-1px}.card.with-tabs .tabs-component .tabs-component-tab:not(:last-child){border-bottom:1px dotted #b9c1d1}.dashboard-table .table-component tr:first-child{margin-top:20px}.dashboard-table .table-component td:first-child{padding-top:40px!important;justify-content:center}}.login-page{height:100%;background-color:#f9fbff}.login-page .login-wrapper{height:100%;padding-top:0;position:relative;display:flex;justify-content:center;align-items:center}.login-page .login-box{color:#fff;padding:20px;width:100%;max-width:400px}.login-page .login-box .input-label{padding-bottom:5px;margin:0;font-weight:500;font-size:14px;line-height:21px;color:#55547a}.login-page .login-box .other-actions{margin-bottom:10px;margin-top:20px}.login-page .login-box .page-copyright{font-size:14px;margin-top:50px;text-align:center}.login-page .login-box .page-copyright p{margin-bottom:10px}.login-page .login-box a{color:#5851d8}.login-page .login-box a:hover{color:#443cd3}.login-page .login-box .btn-login{background-color:#5851d8;color:#fff}.login-page .login-box .btn-login:hover{background-color:#443cd3}.login-page .login-box .c-input{color:#fff}.login-page .login-box .c-input .c-indicator{top:2px}.login-page .login-wrapper .c-input>input:checked~.c-indicator{background-color:#333}.login-page .login-wrapper .c-input>input:focus~.c-indicator{box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #262626}.login-page .login-wrapper .c-input>input:active~.c-indicator{background-color:#262626}.login-page .logo-main{margin-bottom:127px;text-align:left}.login-page .logo-main img{height:auto;width:300px}.login-page .other-options{border-top:1px solid #fff;padding:2rem 0 1rem}.login-page .other-options h6{color:#c7cbd1;font-size:15px;margin-top:12px}.login-page .other-options a,.login-page .other-options a:hover{color:#fff}.login-page .actions{margin-top:30px}.login-page .actions .btn-theme{margin-right:20px;margin-top:20px}@media (max-width:768px){.login-page .other-actions{font-size:14px}.login-page .logo-main img{height:auto;max-width:100%}}.login-page .social-links{margin-top:40px}.login-page .social-links .link-text{font-style:normal;font-weight:500;font-size:15px;line-height:17px;color:#b9c1d1}.login-page .social-links .social-logo{display:flex;align-items:center;padding-top:25px}.login-page .social-links .social-logo .icon{display:block;margin-right:30px;cursor:pointer}.login-page.login-3 .site-wrapper{display:flex}.login-page.login-3 .login-box{color:#333;flex:2;padding:150px 60px 180px;display:flex;justify-content:center;align-items:center;max-width:500px;min-width:450px}.login-page.login-3 .login-box .box-wrapper{width:100%}.login-page.login-3 .content-box{background-image:url(/images/login-vector1.svg);background-size:cover;background-repeat:no-repeat;height:100%;width:100%;position:relative;flex:5;display:flex;justify-content:center;align-items:center;flex-direction:column}.login-page.login-3 .content-box h1{color:#fff;font-size:50px}.login-page.login-3 .content-box p{color:#f9fbff;font-style:normal;font-weight:400;font-size:16px;line-height:24px}.login-page.login-3 .content-bottom{background-image:url(/images/login-vector3.svg);background-size:100% 100%;background-repeat:no-repeat;z-index:100;position:absolute;width:100%;height:100px;bottom:0;right:32%}.login-page.login-3 .content-box:before{background-image:url(/images/frame.svg);content:"";background-size:100% 100%;background-repeat:no-repeat;height:300px;right:0;position:absolute;top:0;width:420px;z-index:1}.login-page.login-3 .content-box:after{background-image:url(/images/login-vector2.svg);content:"";background-size:cover;background-repeat:no-repeat;height:100%;width:100%;right:7.5%;position:absolute}.login-page.login-3 .c-input{color:#555}.login-page.login-3 .login-box a{color:#817ae3}.login-page.login-3 .login-box a:hover{color:#4d4d4d}.login-page.login-3 .other-options h6{color:#555}.login-page.login-3 .page-copyright{margin-top:0;padding-top:150px;color:#a5acc1;font-style:normal;font-weight:500;font-size:15px;line-height:17px;text-align:left}.login-page.login-3 .page-copyright a{color:#5851d8}.login-page.login-3 .page-copyright a:hover{color:#352dc9}.login-page.login-3 .logo-main img{width:200px}@media (max-width:1240px){.login-page.login-3 .content-box h1,.login-page.login-3 .content-box p{display:none}.login-page.login-3 .content-box:before{height:250px;width:350px}.login-page.login-3 .content-box:after{right:13%}}@media (max-width:992px){.login-page.login-3 .content-box h1{font-size:15px;margin-left:50px}.login-page.login-3 .content-box p{display:none}.login-page.login-3 .content-bottom{width:600px;height:0}.login-page.login-3 .content-box:before{height:150px;width:250px}}@media (max-width:768px){.login-page.login-3 .page-copyright{padding-top:110px}.login-page.login-3 .login-box{width:100%;max-width:none;min-width:0;padding:30px}.login-page.login-3 .content-box{display:none}}.page-error-404{background:#55547a}.page-error-404 .error-box{border-radius:4px;left:50%;margin:0 auto 45px;padding:20px;position:absolute;top:50%;color:#fff;transform:translate(-50%,-60%);width:800px}.page-error-404 h1{font-size:10rem;color:#5851d8;margin-bottom:2rem}.page-error-404 h5{font-size:2rem;color:#fff;margin-bottom:40px}.bg-yellow{background-color:#5851d8;color:#55547a}.bg-yellow:hover{background-color:#443cd3}.customization .prefix-input{max-width:30%}.customization .form-section{padding:8px 15px}.customization .invoice-customization-card{border:1px solid #ebf1fa;border-radius:5px}@media (max-width:480px){.customization .address-customization-card .address-fields-container{display:flex;flex-wrap:wrap}.customization .address-customization-card .address-fields-container .fields-list{border-right:0}.customization .tabs .tab{padding:10px}}.invoice-create-page{position:relative}.invoice-create-page .page-header{margin:0 0 40px}.invoice-create-page .page-header .page-title{font-size:24.5px;margin:0 0 15px}.invoice-create-page .page-header .breadcrumb .breadcrumb-item{font-size:14px}.invoice-create-page .page-header .page-actions .btn-crater{margin:0 0 0 14px}.invoice-create-page .invoice-input{padding-left:40px}.invoice-create-page .show-customer{background:#fff;padding:0 10px;min-height:170px;border:1px solid #ebf1fa}.invoice-create-page .show-customer label{font-size:14px;margin:0;padding:0}.invoice-create-page .address-menu{display:flex;flex-direction:column}.invoice-create-page .address-menu .title{font-size:15px;white-space:nowrap;color:#b9c1d1;font-weight:500}.invoice-create-page .address-menu .content{display:flex;flex:1;flex-direction:column}.invoice-create-page .address-menu .content label{position:relative;white-space:nowrap;width:90%;font-size:14px;overflow:hidden;text-overflow:ellipsis}.invoice-create-page .customer-content{display:flex;justify-content:space-between}.invoice-create-page .customer-content .email{flex:8}.invoice-create-page .customer-content .action{cursor:pointer;flex:1;font-size:14px;font-weight:500;color:#5851d8;margin:0 9px 0 0;position:relative}.invoice-create-page .add-customer{padding:0}.invoice-create-page .add-customer .add-customer-action{position:relative;display:flex;justify-content:center;background:#fff;border:1px solid #ebf1fa;min-height:170px;border-radius:5px;padding:64px 0}.invoice-create-page .add-customer .add-customer-action .customer-icon{display:flex;justify-content:center;background:#ebf1fa;width:40px;color:#fff;height:40px;font-size:14px;font-family:Poppins;padding:11px 14px 11px 13px;border-radius:50%;margin:0 15px 0 0}.invoice-create-page .add-customer .add-customer-action label{font-size:17.5px;margin:7px 0 0}.invoice-create-page .customer-required{border:1px solid #fb7178;border-radius:5px}.invoice-create-page .offset-md-1{margin-left:5%}.invoice-create-page .invoice-input-group{margin-bottom:41px;margin-right:0}.invoice-create-page .invoice-input-group .invoice-input{padding-right:0}.invoice-create-page .invoice-input-group .invoice-input label{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;color:#263b5e;margin:0 0 10px}.invoice-create-page .item-table{width:100%;text-align:center}.invoice-create-page .item-table .item-table-header{border:1px solid #ebf1fa;background:#fff}.invoice-create-page .item-table .item-table-header th{padding:10px 20px;font-style:normal;font-weight:500;font-size:15px;line-height:21px;color:#55547a;border-top:1px solid #ebf1fa;border-bottom:1px solid #ebf1fa}.invoice-create-page .item-table .item-table-header .item-heading{padding-left:50px}.invoice-create-page .item-table .item-table-header .amount-heading{padding-right:50px}.invoice-create-page .item-table .item-table-header th:first-child{padding-left:0!important;border-left:1px solid #ebf1fa}.invoice-create-page .item-table .item-table-header th:last-child{padding-right:0!important;border-right:1px solid #ebf1fa}.invoice-create-page .item-table .item-body td:first-child{padding-left:0!important}.invoice-create-page .item-table .item-body td:last-child{padding-right:0!important}.invoice-create-page .item-table .item-body .item-row{background:#fff;border:1px solid #ebf1fa;box-sizing:border-box;border-radius:0 0 5px 5px}.invoice-create-page .item-table .item-body .item-row td{padding:15px 20px;text-align:left;vertical-align:top}.invoice-create-page .item-table .item-body .item-row>td{padding:0}.invoice-create-page .item-table .item-body .item-row .item-select{font-style:normal;font-weight:400;font-size:14px;line-height:20px;color:#a5acc1;overflow:auto!important;max-height:250px!important}.invoice-create-page .item-table .item-body .item-row .search-select .selector-menu{top:45px!important}.invoice-create-page .item-table .item-body .item-row .main{padding:0!important}.invoice-create-page .item-table .item-body .item-row .item-amount{display:flex;align-items:center;justify-content:flex-end}.invoice-create-page .item-table .item-body .item-row .item-select-wrapper{display:flex;justify-content:flex-start}.invoice-create-page .item-table .item-body .item-row .item-selector{flex:1}.invoice-create-page .item-table .item-body .item-row .selected-item{display:flex;align-items:center;height:40px;padding-left:10px;border:1px solid #ebf1fa;background:#f9fbff;border-radius:5px;position:relative}.invoice-create-page .item-table .item-body .item-row .deselect-icon{color:#b9c1d1;position:absolute;top:10px;right:10px;cursor:pointer}.invoice-create-page .item-table .item-body .item-row .remove-icon-wrapper,.invoice-create-page .item-table .item-body .item-row .sort-icon-wrapper{display:flex;justify-content:center;align-items:center;margin:0 15px;height:40px;width:20px;cursor:pointer}.invoice-create-page .item-table .item-body .item-row .sort-icon-wrapper{color:#b9c1d1;height:20px;margin-top:8px;cursor:move}.invoice-create-page .item-table .item-body .item-row .remove-icon{color:#55547a}.invoice-create-page .tax-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.invoice-create-page .tax-row .tax-amount{flex:3}.invoice-create-page .tax-row .tax-select{flex:4}.invoice-create-page .tax-tr td{padding:0 21px}.invoice-create-page .multi-select-item .multiselect,.invoice-create-page .multi-select-item .multiselect__input,.invoice-create-page .multi-select-item .multiselect__single{border:none;display:flex;align-items:center}.invoice-create-page .multi-select-item .multiselect:focus{outline:none}.invoice-create-page .multi-select-item .multiselect__input,.invoice-create-page .multi-select-item .multiselect__single{min-height:40px;padding-left:10px;border:1px solid #eaf1fb}.invoice-create-page .multi-select-item .multiselect__tags{min-height:30px;padding:0;border:0}.invoice-create-page .multi-select-item .multiselect__select{line-height:16px;width:40px;height:38px;transition:transform .2s ease}.invoice-create-page .multi-select-item .multiselect__content-wrapper{overflow:hidden;border:1px solid #ebf1fa;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);border-radius:0 0 5px 5px}.invoice-create-page .multi-select-item .multiselect__content{max-height:240px;overflow:auto}.invoice-create-page .add-item-action{display:flex;justify-content:center;align-items:center;color:#817ae3;padding:13px 23px;width:100%;font-size:15px;border-bottom:1px solid #ebf1fa;cursor:pointer}.invoice-create-page .add-item-action:hover{background:#ebf1fa}.invoice-create-page .add-item-action .icon-fa{margin:2px 11px 0 0}.invoice-create-page .invoice-foot{display:flex;justify-content:space-between;margin:35px 0}.invoice-create-page .invoice-foot .btn-template{background:#ebf1fa;border:1px solid #ebf1fa;color:#040405;font-size:14px}.invoice-create-page .invoice-foot .icon-button{color:#a5acc1}.invoice-create-page .invoice-foot label{font-size:14px;margin:0}.invoice-create-page .invoice-foot .invoice-notes{display:flex;flex-direction:column;margin:5px 0 0}.invoice-create-page .invoice-foot .invoice-notes textarea{border:1px solid #ebf1fa;border-radius:5px;width:100%;min-height:100px;padding:0}.invoice-create-page .invoice-foot .invoice-total{display:flex;flex-direction:column;background:#fff;min-width:390px;padding:15px 20px;border:1px solid #ebf1fa;border-radius:5px}.invoice-create-page .invoice-foot .invoice-total>label{text-transform:uppercase}.invoice-create-page .invoice-foot .invoice-total .section{width:100%;display:flex;justify-content:space-between;align-items:center;margin:0 0 7px}.invoice-create-page .invoice-foot .invoice-total .section .invoice-label{font-size:14px;font-weight:600;text-transform:uppercase;line-height:21px;color:#a5acc1}.invoice-create-page .invoice-foot .invoice-total .section .invoice-amount{font-size:18px;color:#55547a;display:flex;justify-content:center;align-items:center}.invoice-create-page .invoice-foot .invoice-total .section .total{color:#817ae3}.invoice-create-page .invoice-foot .invoice-total .section .discount-drop-down{width:105px}.invoice-create-page .invoice-foot .invoice-total .section .item-dropdown{font-family:Arial,Helvetica,sans-serif!important;font-size:16px}.invoice-create-page .invoice-foot .invoice-total .border-top{margin:0;padding-top:7px;border-top:1px solid #ebf1fa}.invoice-create-page .invoice-foot .invoice-total .tax-selector{font-weight:600;font-size:14px;margin-top:12px;line-height:21px;color:#817ae3}.invoice-create-page .item-row .item-name{font-weight:500;text-align:left;font-size:14px}.invoice-create-page .item-row .item-description{width:100%;font-weight:300;font-size:12px;padding-top:2px}.invoice-create-page .item-row .item-description textarea{border:none;resize:none;width:100%;padding-left:11px;color:#595959}.invoice-create-page .item-row .item-description textarea::-webkit-input-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.invoice-create-page .item-row .item-description textarea::-moz-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.invoice-create-page .item-row .item-description textarea:-ms-input-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.invoice-create-page .item-row .item-description textarea::-ms-input-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.invoice-create-page .item-row .item-description textarea::placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.invoice-create-page .item-row .action{font-weight:500;font-size:14px;color:#5851d8;cursor:pointer}.invoice-create-page .item-row .activator label{color:#a5acc1;font-size:14px}.invoice-create-page .item-dropdown{display:flex;border:1px solid #ebf1fa!important;background-color:#fff!important;border-radius:0 5px 5px 0!important;justify-content:center;align-items:center;height:40px}.invoice-create-page .item-dropdown:focus{box-shadow:none!important}.invoice-create-page .item-discount{border-radius:5px 0 0 5px!important;height:40px}@media (max-width:480px){.invoice-create-page .page-header{margin-bottom:13px}.invoice-create-page .page-header .invoice-action-btn{width:100%;display:flex;justify-content:center;margin-top:15px;margin-right:0!important}.invoice-create-page .collapse-input,.invoice-create-page .invoice-customer-container{padding-right:0}.invoice-create-page .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.invoice-create-page .page-actions button{margin-bottom:10px}.invoice-create-page .invoice-input-group .invoice-input{padding-right:15px;padding-left:20px;margin-top:1.5rem}.invoice-create-page .invoice-foot{display:flex;flex-direction:column;justify-content:center;align-items:center}.invoice-create-page .invoice-foot .btn-template{width:100%;display:flex;justify-content:center}.invoice-create-page .invoice-foot .invoice-total{min-width:384px;margin-top:25px}}.invoice-view-page{padding-left:570px!important}.invoice-view-page .invoice-sidebar{height:100vh;height:100%;left:240px;padding:60px 0 10px;position:fixed;top:0;width:300px;z-index:25;background:#fff}.invoice-view-page .inv-search{background:#f9fbff!important}.invoice-view-page .side-invoice{cursor:pointer;padding:12px 16px;display:flex;justify-content:space-between;border-bottom:1px solid rgba(185,193,209,.41);border-left:3px solid transparent}.invoice-view-page .side-invoice:last-child{margin-bottom:98px}.invoice-view-page .side-invoice.router-link-exact-active{border-left:3px solid #5851d8;background-color:#f9fbff}.invoice-view-page .side-invoice:hover{background-color:#f9fbff}.invoice-view-page .side-invoice .left .inv-name{font-style:normal;font-weight:400;font-size:14px;line-height:21px;text-transform:capitalize;color:#040405;margin-bottom:6px}.invoice-view-page .side-invoice .left .inv-number{font-style:normal;font-weight:500;font-size:12px;line-height:18px;color:#a5acc1;margin-bottom:6px}.invoice-view-page .side-invoice .left .inv-status{font-style:normal;font-weight:400;font-size:10px;line-height:15px;padding:2px 10px;display:inline-block}.invoice-view-page .side-invoice .right .inv-amount{font-style:normal;font-weight:600;font-size:20px;line-height:30px;text-align:right;color:#263b5e}.invoice-view-page .side-invoice .right .inv-date{font-style:normal;font-weight:400;font-size:14px;line-height:21px;text-align:right;color:#a5acc1}.invoice-view-page .no-result{color:#b9c1d1;display:flex;justify-content:center;margin-top:20px}.invoice-view-page .side-header{height:100px;display:flex;justify-content:space-between;align-items:center;padding:30px 15px;border-bottom:1px solid rgba(185,193,209,.41)}.invoice-view-page .side-header .inv-button{background:#f9fbff;border:1px solid #ebf1fa;box-sizing:border-box;color:#b9c1d1;box-shadow:none!important}.invoice-view-page .side-content{overflow-y:scroll;height:100%}.invoice-view-page .invoice-view-page-container{display:flex;flex-direction:column;height:75vh;min-height:0;overflow:hidden}.invoice-view-page .frame-style{flex:1 1 auto;border:1px solid #b9c1d1;border-radius:7px}.invoice-view-page .inv-filter-fields-btn:focus,.invoice-view-page .inv-filter-sorting-btn:focus{border-color:inherit;box-shadow:none;outline:none!important}.invoice-view-page .filter-container{margin-left:12px}.invoice-view-page .filter-container .filter-title{padding:5px 10px;border-bottom:1px solid rgba(185,193,209,.41);margin-bottom:10px}.invoice-view-page .filter-container .filter-items{display:flex;padding:4px 9px;cursor:pointer}.invoice-view-page .filter-container .filter-items:first-child{margin-top:auto}.invoice-view-page .filter-container .inv-label{font-style:normal;font-weight:400;font-size:14px;line-height:12px;text-transform:capitalize;color:#040405;margin-bottom:6px;margin-left:10px;cursor:pointer}.invoice-view-page .filter-container .base-input{width:20%}.invoice-view-page .filter-container .dropdown-container{padding:0!important;left:auto;right:0;width:155px}.invoice-view-page .filter-invoice-date .vdp-datepicker div .vdp-datepicker__clear-button{margin-left:-21px;margin-top:2px;font-size:20px;font-weight:800}.invoice-view-page .date-group{display:flex}.invoice-view-page .to-text{padding:8px}@media (max-width:768px){.invoice-view-page{padding-left:310px!important}.invoice-sidebar{transition:all .2s;left:0!important}}.invoice-index-page .table-actions{position:relative;border:none}.invoice-index-page .table-actions .table-actions-button{position:absolute;right:0;top:-15px}.invoice-index-page .table-actions .table-stats{margin:0;position:absolute;right:0;top:40px}.invoice-index-page .filter-container{display:flex;justify-content:space-between}.invoice-index-page .filter-customer,.invoice-index-page .filter-status{margin-right:40px;flex:1}.invoice-index-page .filter-date{flex:2;display:flex;margin-right:40px;align-items:center}.invoice-index-page .filter-date .from,.invoice-index-page .filter-date .to,.invoice-index-page .filter-invoice{flex:1}.invoice-index-page .dashed{border:1px solid #b9c1d1;width:10px;margin-top:28px}@media (max-width:1240px){.invoice-index-page .filter-container{flex-direction:column}.invoice-index-page .filter-invoice{margin-right:40px}.invoice-index-page .filter-customer,.invoice-index-page .filter-date,.invoice-index-page .filter-invoice,.invoice-index-page .filter-status{margin-bottom:10px;margin-right:0}}@media (max-width:480px){.invoice-index-page .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.invoice-index-page .page-actions button{margin-bottom:10px}}.estimate-create-page{position:relative}.estimate-create-page .page-header{margin:0 0 40px}.estimate-create-page .page-header .page-title{font-size:24.5px;margin:0 0 15px}.estimate-create-page .page-header .breadcrumb .breadcrumb-item{font-size:14px}.estimate-create-page .page-header .page-actions .btn-crater{margin:0 0 0 14px}.estimate-create-page .estimate-input{padding-left:40px}.estimate-create-page .show-customer{background:#fff;padding:0 10px;min-height:170px;border:1px solid #ebf1fa}.estimate-create-page .show-customer label{font-size:14px;margin:0;padding:0}.estimate-create-page .address-menu{display:flex;flex-direction:column}.estimate-create-page .address-menu .title{font-size:15px;white-space:nowrap;color:#b9c1d1;font-weight:500}.estimate-create-page .address-menu .content{display:flex;flex:1;flex-direction:column}.estimate-create-page .address-menu .content label{position:relative;white-space:nowrap;width:90%;font-size:14px;overflow:hidden;text-overflow:ellipsis}.estimate-create-page .customer-content{display:flex;justify-content:space-between}.estimate-create-page .customer-content .email{flex:8}.estimate-create-page .customer-content .action{cursor:pointer;flex:1;font-size:14px;font-weight:500;color:#5851d8;margin:0;position:relative}.estimate-create-page .add-customer{padding:0}.estimate-create-page .add-customer .add-customer-action{position:relative;display:flex;justify-content:center;background:#fff;border:1px solid #ebf1fa;min-height:170px;border-radius:5px;padding:64px 0}.estimate-create-page .add-customer .add-customer-action .customer-icon{display:flex;justify-content:center;background:#ebf1fa;width:40px;color:#fff;height:40px;font-size:14px;font-family:Poppins;padding:11px 14px 11px 13px;border-radius:50%;margin:0 15px 0 0}.estimate-create-page .add-customer .add-customer-action label{font-size:17.5px;margin:7px 0 0}.estimate-create-page .customer-required{border:1px solid #fb7178;border-radius:5px}.estimate-create-page .offset-md-1{margin-left:5%}.estimate-create-page .estimate-input-group{margin-bottom:41px;margin-right:0}.estimate-create-page .estimate-input-group .estimate-input{padding-right:0}.estimate-create-page .estimate-input-group .estimate-input label{font-family:Poppins;font-style:normal;font-weight:500;font-size:14px;color:#263b5e;margin:0 0 10px}.estimate-create-page .item-table{width:100%;text-align:center}.estimate-create-page .item-table .item-table-header{border:1px solid #ebf1fa;background:#fff}.estimate-create-page .item-table .item-table-header th{padding:10px 20px;font-style:normal;font-weight:500;font-size:15px;line-height:21px;color:#55547a;border-top:1px solid #ebf1fa;border-bottom:1px solid #ebf1fa}.estimate-create-page .item-table .item-table-header .item-heading{padding-left:50px}.estimate-create-page .item-table .item-table-header .amount-heading{padding-right:50px}.estimate-create-page .item-table .item-table-header th:first-child{padding-left:0!important;border-left:1px solid #ebf1fa}.estimate-create-page .item-table .item-table-header th:last-child{padding-right:0!important;border-right:1px solid #ebf1fa}.estimate-create-page .item-table .item-body td:first-child{padding-left:0!important}.estimate-create-page .item-table .item-body td:last-child{padding-right:0!important}.estimate-create-page .item-table .item-body .item-row{background:#fff;border:1px solid #ebf1fa;box-sizing:border-box;border-radius:0 0 5px 5px}.estimate-create-page .item-table .item-body .item-row td{padding:15px 20px;text-align:left;vertical-align:top}.estimate-create-page .item-table .item-body .item-row>td{padding:0}.estimate-create-page .item-table .item-body .item-row .item-select{font-style:normal;font-weight:400;font-size:14px;line-height:20px;color:#a5acc1;overflow:auto!important;max-height:250px!important}.estimate-create-page .item-table .item-body .item-row .search-select .selector-menu{top:45px!important}.estimate-create-page .item-table .item-body .item-row .main{padding:0!important}.estimate-create-page .item-table .item-body .item-row .item-amount{display:flex;align-items:center;justify-content:flex-end}.estimate-create-page .item-table .item-body .item-row .item-select-wrapper{display:flex;justify-content:flex-start}.estimate-create-page .item-table .item-body .item-row .item-selector{flex:1}.estimate-create-page .item-table .item-body .item-row .selected-item{display:flex;align-items:center;height:40px;padding-left:10px;border:1px solid #ebf1fa;background:#f9fbff;border-radius:5px;position:relative}.estimate-create-page .item-table .item-body .item-row .deselect-icon{color:#b9c1d1;position:absolute;top:10px;right:10px;cursor:pointer}.estimate-create-page .item-table .item-body .item-row .remove-icon-wrapper,.estimate-create-page .item-table .item-body .item-row .sort-icon-wrapper{display:flex;justify-content:center;align-items:center;margin:0 15px;height:40px;width:20px;cursor:pointer}.estimate-create-page .item-table .item-body .item-row .sort-icon-wrapper{color:#b9c1d1;height:20px;margin-top:8px;cursor:move}.estimate-create-page .item-table .item-body .item-row .remove-icon{color:#55547a}.estimate-create-page .tax-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.estimate-create-page .tax-row .tax-amount{flex:3}.estimate-create-page .tax-row .tax-select{flex:4}.estimate-create-page .tax-tr td{padding:0 21px}.estimate-create-page .multi-select-item .multiselect,.estimate-create-page .multi-select-item .multiselect__input,.estimate-create-page .multi-select-item .multiselect__single{border:none;display:flex;align-items:center}.estimate-create-page .multi-select-item .multiselect:focus{outline:none}.estimate-create-page .multi-select-item .multiselect__input,.estimate-create-page .multi-select-item .multiselect__single{min-height:40px;padding-left:10px;border:1px solid #eaf1fb}.estimate-create-page .multi-select-item .multiselect__tags{min-height:30px;padding:0;border:0}.estimate-create-page .multi-select-item .multiselect__select{line-height:16px;width:40px;height:38px;transition:transform .2s ease}.estimate-create-page .multi-select-item .multiselect__content-wrapper{overflow:hidden;border:1px solid #ebf1fa;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);border-radius:0 0 5px 5px}.estimate-create-page .multi-select-item .multiselect__content{max-height:240px;overflow:auto}.estimate-create-page .add-item-action{display:flex;justify-content:center;align-items:center;color:#817ae3;padding:13px 23px;width:100%;font-size:15px;border-bottom:1px solid #ebf1fa;cursor:pointer}.estimate-create-page .add-item-action:hover{background:#ebf1fa}.estimate-create-page .add-item-action .icon-fa{margin:2px 11px 0 0}.estimate-create-page .estimate-foot{display:flex;justify-content:space-between;margin:35px 0}.estimate-create-page .estimate-foot .btn-template{background:#ebf1fa;border:1px solid #ebf1fa;color:#040405;font-size:14px}.estimate-create-page .estimate-foot .icon-button{color:#a5acc1}.estimate-create-page .estimate-foot label{font-size:14px;margin:0}.estimate-create-page .estimate-foot .estimate-notes{display:flex;flex-direction:column;margin:5px 0 0}.estimate-create-page .estimate-foot .estimate-notes textarea{border:1px solid #ebf1fa;border-radius:5px;width:100%;min-height:100px;padding:0}.estimate-create-page .estimate-foot .estimate-total{display:flex;flex-direction:column;background:#fff;min-width:390px;padding:15px 20px;border:1px solid #ebf1fa;border-radius:5px}.estimate-create-page .estimate-foot .estimate-total>label{text-transform:uppercase}.estimate-create-page .estimate-foot .estimate-total .section{width:100%;display:flex;justify-content:space-between;align-items:center;margin:0 0 7px}.estimate-create-page .estimate-foot .estimate-total .section .estimate-label{font-size:14px;font-weight:600;text-transform:uppercase;line-height:21px;color:#a5acc1}.estimate-create-page .estimate-foot .estimate-total .section .estimate-amount{font-size:18px;color:#55547a;display:flex;justify-content:center;align-items:center}.estimate-create-page .estimate-foot .estimate-total .section .total{color:#817ae3}.estimate-create-page .estimate-foot .estimate-total .section .discount-drop-down{width:105px}.estimate-create-page .estimate-foot .estimate-total .section .item-dropdown{font-family:Arial,Helvetica,sans-serif!important;font-size:16px}.estimate-create-page .estimate-foot .estimate-total .border-top{margin:0;padding-top:7px;border-top:1px solid #ebf1fa}.estimate-create-page .estimate-foot .estimate-total .tax-selector{font-weight:600;font-size:14px;margin-top:12px;line-height:21px;color:#817ae3}.estimate-create-page .item-row .item-name{font-weight:500;text-align:left;font-size:14px}.estimate-create-page .item-row .item-description{width:100%;font-weight:300;font-size:12px;padding-top:2px}.estimate-create-page .item-row .item-description textarea{border:none;resize:none;width:100%;color:#595959}.estimate-create-page .item-row .item-description textarea::-webkit-input-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.estimate-create-page .item-row .item-description textarea::-moz-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.estimate-create-page .item-row .item-description textarea:-ms-input-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.estimate-create-page .item-row .item-description textarea::-ms-input-placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.estimate-create-page .item-row .item-description textarea::placeholder{font-family:Poppins;font-style:normal;font-size:12px;color:#b9c1d1}.estimate-create-page .item-row .action{font-weight:500;font-size:14px;color:#5851d8;cursor:pointer}.estimate-create-page .item-row .activator label{color:#a5acc1;font-size:14px}.estimate-create-page .item-dropdown{display:flex;border:1px solid #ebf1fa!important;background-color:#fff!important;border-radius:0 5px 5px 0!important;justify-content:center;align-items:center;height:40px}.estimate-create-page .item-dropdown:focus{box-shadow:none!important}.estimate-create-page .item-discount{border-radius:5px 0 0 5px!important;height:40px}@media (max-width:480px){.estimate-create-page .page-header{margin-bottom:13px}.estimate-create-page .page-header .invoice-action-btn{width:100%;display:flex;justify-content:center;margin-top:15px;margin-right:0!important}.estimate-create-page .collapse-input,.estimate-create-page .estimate-customer-container{padding-right:0}.estimate-create-page .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.estimate-create-page .page-actions button{margin-bottom:10px}.estimate-create-page .estimate-input-group .estimate-input{padding-right:15px;padding-left:20px;margin-top:1.5rem}.estimate-create-page .estimate-foot{display:flex;flex-direction:column;justify-content:center;align-items:center}.estimate-create-page .estimate-foot .btn-template{width:100%;display:flex;justify-content:center}.estimate-create-page .estimate-foot .estimate-total{min-width:384px;margin-top:25px}}.estimate-index-page .table-actions{position:relative;border:none}.estimate-index-page .table-actions .table-actions-button{position:absolute;right:0;top:-15px}.estimate-index-page .table-actions .table-stats{margin:0;position:absolute;right:0;top:40px}.estimate-index-page .filter-container{display:flex;justify-content:space-between}.estimate-index-page .filter-customer,.estimate-index-page .filter-status{margin-right:40px;flex:1}.estimate-index-page .filter-date{flex:2;display:flex;margin-right:40px;align-items:center}.estimate-index-page .filter-date .from,.estimate-index-page .filter-date .to,.estimate-index-page .filter-estimate{flex:1}.estimate-index-page .dashed{border:1px solid #b9c1d1;width:10px;margin-top:28px}@media (max-width:1240px){.estimate-index-page .filter-container{flex-direction:column}.estimate-index-page .filter-estimate{margin-right:40px}.estimate-index-page .filter-customer,.estimate-index-page .filter-date,.estimate-index-page .filter-estimate,.estimate-index-page .filter-status{margin-bottom:10px;margin-right:0}}@media (max-width:480px){.estimate-index-page .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.estimate-index-page .page-actions button{margin-bottom:10px}}.estimate-view-page{padding-left:570px!important}.estimate-view-page .estimate-sidebar{height:100vh;height:100%;left:240px;padding:60px 0 10px;position:fixed;top:0;width:300px;z-index:30;background:#fff}.estimate-view-page .inv-search{background:#f9fbff!important}.estimate-view-page .side-estimate{cursor:pointer;padding:12px 16px;display:flex;justify-content:space-between;border-bottom:1px solid rgba(185,193,209,.41);border-left:3px solid transparent}.estimate-view-page .side-estimate:last-child{margin-bottom:98px}.estimate-view-page .side-estimate.router-link-exact-active{border-left:3px solid #5851d8;background-color:#f9fbff}.estimate-view-page .side-estimate:hover{background-color:#f9fbff}.estimate-view-page .side-estimate .left .status-expired{background:#fed7d7;font-size:13px;color:#9b2c2c;padding:5px 10px}.estimate-view-page .side-estimate .left .status-accepted{background:#d5eed0;font-size:13px;color:#354930;padding:5px 10px}.estimate-view-page .side-estimate .left .status-sent{background:rgba(246,208,154,.4);font-size:13px;color:#a96e1a;padding:5px 10px}.estimate-view-page .side-estimate .left .status-viewed{background:#c9e3ec;font-size:13px;color:#1e576c;padding:5px 10px}.estimate-view-page .side-estimate .left .status-pending{background:#fed7d7;font-size:13px;color:#9b2c2c;padding:5px 10px}.estimate-view-page .side-estimate .left .status-rejected{background:#e1e0ea;font-size:13px;color:#312f57;padding:5px 10px}.estimate-view-page .side-estimate .left .status-draft{background:#f8edcb;font-size:13px;color:#6c432e;padding:5px 10px}.estimate-view-page .side-estimate .left .inv-name{font-style:normal;font-weight:400;font-size:14px;line-height:21px;text-transform:capitalize;color:#040405;margin-bottom:6px}.estimate-view-page .side-estimate .left .inv-number{font-style:normal;font-weight:500;font-size:12px;line-height:18px;color:#595959;margin-bottom:6px}.estimate-view-page .side-estimate .left .inv-status{font-style:normal;font-weight:400;font-size:10px;line-height:15px;padding:2px 10px;display:inline-block}.estimate-view-page .side-estimate .right .inv-amount{font-style:normal;font-weight:600;font-size:20px;line-height:30px;text-align:right;color:#263b5e}.estimate-view-page .side-estimate .right .inv-date{font-style:normal;font-weight:400;font-size:14px;line-height:21px;text-align:right;color:#595959}.estimate-view-page .no-result{color:#b9c1d1;display:flex;justify-content:center;margin-top:20px}.estimate-view-page .side-header{height:100px;display:flex;justify-content:space-between;align-items:center;padding:30px 15px;border-bottom:1px solid rgba(185,193,209,.41)}.estimate-view-page .side-header .inv-button{background:#f9fbff;border:1px solid #eaf1fb;box-sizing:border-box;color:#a5acc1;box-shadow:none!important}.estimate-view-page .side-content{overflow-y:scroll;height:100%}.estimate-view-page .estimate-view-page-container{display:flex;flex-direction:column;height:75vh;min-height:0;overflow:hidden}.estimate-view-page .frame-style{flex:1 1 auto;border:1px solid #b9c1d1;border-radius:7px}.estimate-view-page .inv-filter-fields-btn:focus,.estimate-view-page .inv-filter-sorting-btn:focus{outline:none!important;box-shadow:0 0 0 .09rem rgba(111,110,142,.5)!important}.estimate-view-page .filter-container{margin-left:12px}.estimate-view-page .filter-container .filter-title{padding:5px 10px;border-bottom:1px solid rgba(185,193,209,.41);margin-bottom:10px}.estimate-view-page .filter-container .filter-items{display:flex;padding:4px 9px;cursor:pointer}.estimate-view-page .filter-container .filter-items:first-child{margin-top:auto}.estimate-view-page .filter-container .inv-label{font-style:normal;font-weight:400;font-size:14px;line-height:12px;text-transform:capitalize;color:#040405;margin-bottom:6px;margin-left:10px;cursor:pointer}.estimate-view-page .filter-container .base-input{width:20%}.estimate-view-page .filter-container .dropdown-container{padding:0!important;left:auto;right:0;width:166px}.estimate-view-page .filter-estimate-date .vdp-datepicker div .vdp-datepicker__clear-button{margin-left:-21px;margin-top:2px;font-size:20px;font-weight:800}.estimate-view-page .date-group{display:flex}.estimate-view-page .to-text{padding:8px}@media (max-width:768px){.estimate-view-page{padding-left:310px!important}.estimate-sidebar{transition:all .2s;left:0!important}}.expenses .collapse-button-container{display:none}.expenses .collapse-button-container .collapse-button{width:100%;display:flex;justify-content:center}.expenses .notes{overflow:hidden;width:200px}.expenses .notes .note{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width:480px){.expenses .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.expenses .page-actions button{margin-bottom:10px}.expenses .page-header{margin-bottom:5px}.expenses .table-actions{margin-top:0!important}.expenses .header-button-container{display:none}.expenses .collapse-button-container{margin-top:8px;display:block}}.settings-container{margin-top:40px}.settings-container .settings-sidebar{list-style-type:none;padding:0}.settings-container .settings-sidebar .settings-menu-item{padding:10px 0;font-weight:500;font-size:14px;line-height:18px;color:#040405}.settings-container .settings-sidebar .settings-menu-item .setting-icon{width:25px;color:#b9c1d1;font-size:16px}.settings-container .settings-sidebar .link-color{color:#a5acc1;display:flex;align-items:center}.settings-container .settings-sidebar .active-setting{color:#5851d8!important;cursor:pointer}.settings-container .settings-sidebar .active-setting .setting-icon{color:#5851d8!important}.settings-container .setting-main-container .setting-card{padding:30px;min-height:620px}.settings-container .setting-main-container .page-header{margin:0}.settings-container .setting-main-container .page-header .page-title{margin:0;padding-bottom:10px;font-weight:500;font-size:17.5px;line-height:21px;letter-spacing:.1px;color:#000}.settings-container .setting-main-container .page-header .page-sub-title{max-width:480px;font-size:14px;line-height:21px;color:#a5acc1;margin-bottom:30px}.settings-container .setting-main-container .input-label{font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#55547a}.settings-container .expense-category td,.settings-container .tax-table td{background-color:#f9fbff!important}.settings-container .tax-table .compound-tax{display:inline;padding:2px 8px;font-size:10px;line-height:15px;background:#fed7d7;color:#9b2c2c}.settings-container .item-tab .dropdown-container,.settings-container .payment-tab .dropdown-container{right:0;left:auto}.settings-container .update-container .not-verified,.settings-container .update-container .verified{height:15px;width:15px;background-color:#00c99c;display:inline-block;margin:0 10px;border-radius:50%}.settings-container .update-container .not-verified{background-color:#fb7178}.settings-container .update-container .update-spinner{font-size:30px;color:#a5acc1}.settings-container .update-container .update-steps-container{list-style-type:none;width:100%;padding:0}.settings-container .update-container .update-steps-container .update-step{display:flex;width:100%;justify-content:space-between;padding:10px 0;border-bottom:1px solid #ebf1fa}.settings-container .update-container .update-steps-container .update-step:last-child{border-bottom:0 solid}.settings-container .update-container .update-step-text{font-size:1rem;margin:0;line-height:2rem}.settings-container .update-container .update-status-container{display:flex;flex-direction:row;align-items:center}.settings-container .update-container .update-status-container .update-time{font-size:10px;color:#a5acc1;margin-right:10px}.settings-container .update-container .update-status-container .update-status{font-size:13px;width:88px;height:28px;display:block;text-align:center;border-radius:30px;text-transform:uppercase;line-height:2rem}.settings-container .update-container .update-status-container .status-pending{background-color:#eaf1fb;color:#55547a}.settings-container .update-container .update-status-container .status-running{background-color:rgba(21,178,236,.15);color:#15b2ec}.settings-container .update-container .update-status-container .status-finished{background-color:#d4f6ee;color:#00c99c}.settings-container .update-container .update-status-container .status-error{background-color:rgba(251,113,120,.22);color:#fb7178}.settings-container .add-new-tax{height:45px;white-space:nowrap;z-index:1}.settings-container .flex-box{display:flex}.settings-container .left{position:relative;width:50px}.settings-container .btn-switch{position:absolute;top:-18px}.settings-container .box-title{margin-bottom:5px;padding:0;font-size:16px;line-height:21px;color:#55547a}.settings-container .box-desc{margin:0;padding:0;max-width:480px;font-size:12px;line-height:18px;color:#a5acc1}.settings-container .notes{overflow:hidden;width:200px}.settings-container .notes .note{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.settings-container .version{background:#eaf1fb;color:#a5acc1;border:1px solid #eaf1fb;box-sizing:border-box;border-radius:5px;padding:10px;margin-bottom:15px}@media (max-width:480px){.settings-container .setting-main-container .setting-card{overflow:scroll}.settings-container .setting-main-container .ml-15{margin-left:15px}.settings-container .setting-main-container .page-header{flex-wrap:wrap}.settings-container .table-component td:first-child{height:auto;min-height:10px;text-align:center;justify-content:center}.settings-container .tax-table .tax-name{margin-top:21px;width:76%}.settings-container .expense-category .table-component__table__body tr:first-child td:nth-child(2){height:auto;width:101%}.settings-container .add-new-tax{position:relative;z-index:1}}.wizard .logo-main{height:50px}.wizard .wizard-card{padding:30px;width:100%}.wizard .row{margin-bottom:27px}.wizard .form-content{margin-top:70px;display:flex;justify-content:center}.wizard .form-title{font-style:normal;font-weight:600;font-size:24.5px;line-height:29px;color:#000}.wizard .form-desc{font-weight:400;color:#a5acc1;width:55%;margin-bottom:30px}.wizard .form-desc,.wizard .form-label{font-style:normal;font-size:14px;line-height:21px}.wizard .form-label{font-weight:500}.wizard .step-indicator{padding-top:40px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;height:120px}.wizard .indicator-line{border:5px solid #ebf1fa;border-radius:5px;box-sizing:border-box;width:520px;position:relative;display:flex;justify-content:space-around;margin-top:60px}.wizard .indicator-line .center{position:absolute;top:-11px;width:105%;display:flex;justify-content:space-between}.wizard .indicator-line .steps{border-radius:50%;float:left;border:5px solid #ebf1fa;padding:0 5px;height:21px;width:21px;background:#ebf1fa}.wizard .indicator-line .steps.active{border:5px solid #5851d8;background:#fff;border-radius:50%;height:21px;width:21px}.wizard .indicator-line .steps.completed{padding:0;background:#5851d8;border:5px solid #5851d8;border-radius:50%;height:21px;width:21px;display:flex;align-items:center;justify-content:center}.wizard .indicator-line .steps.completed .icon-check{font-style:normal;font-weight:900;font-size:12px;color:#fff;text-align:center;display:flex;align-items:center;justify-content:center;height:100%}.wizard .upload-logo{position:absolute;right:60px}.wizard .upload-logo .preview-logo{height:50px;max-width:300px;padding:10px;border:4px solid #ebf1fa}.wizard .list-items{display:flex;justify-content:space-between;margin-bottom:0;border:1px solid #ebf1fa}.wizard .list-items .left-item,.wizard .list-items .right-item{padding:12px 10px;margin-bottom:0}.wizard .list-items .right-item{display:flex;justify-content:center;align-items:center}.wizard .not-verified,.wizard .verified{height:15px;width:15px;background-color:#00c99c;display:inline-block;margin:0 10px;border-radius:50%}.wizard .not-verified{background-color:#fb7178}.reports .reports-tab-container{margin-top:25px}.reports .reports-frame-style{height:100vh;width:100%;border:1px solid #b9c1d1;border-radius:7px}.reports .report-button{width:auto}.reports .report-view-button{display:none;color:#fff}.reports .report-fields-container{margin-top:25px}.reports .report-field-container{margin-top:auto}.reports .report-submit-button-container{margin-top:32px}.reports .report-label{line-height:21px;font-weight:500;color:#55547a;font-size:14px}@media (max-width:480px){.reports .reports-tab{padding:10px 19px}.reports .report-submit-button-container,.reports .reports-frame-style{display:none}.reports .report-view-button{display:flex;color:#fff!important;justify-content:center}.reports .report-button{width:100%;display:flex;justify-content:center}.reports .report-fields-container{margin-top:0}.reports .report-field-container{margin-top:20px}.reports .tabs .tab{padding:10px 15px}.reports .tabs .tab .tab-link{padding:10px 17px!important}}.customer-create .section-title{font-style:normal;font-weight:500;font-size:17.5px;line-height:21px;letter-spacing:.1px;color:#000}.customer-create .form-label{font-style:normal;font-weight:500;font-size:14px;line-height:21px;color:#55547a}.customer-create .customer-card{border:1px solid #ebf1fa;padding:10px}.customer-create .same-address-checkbox-container{display:flex;margin-bottom:1.5rem;align-items:center;justify-content:flex-end}.customer-create hr{margin-bottom:1.8rem;border:1px solid #ebf1fa}.customer-create .header-button-container{display:block}.customer-create .collapse-button-container{display:none}.customer-create .collapse-button-container .collapse-button{width:100%;display:flex;justify-content:center}@media (max-width:480px){.customer-index .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.customer-index .page-actions button{margin-bottom:10px}.customer-create .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.customer-create .page-actions button{margin-bottom:10px}.customer-create .same-address-checkbox-container{display:flex;justify-content:flex-start;margin-bottom:0}.customer-create hr{margin-bottom:1.2rem;border:1px solid #ebf1fa}.customer-create .section-title{padding:15px}.customer-create .collapse-button-container{display:block}.customer-create .header-button-container{display:none}}@media (max-width:480px){.payments .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.payments .page-actions button{margin-bottom:10px}.payments .page-header{margin-bottom:5px}.payments .table-actions{margin-top:0!important}}.payment-create .header-button-container{display:block}.payment-create .collapse-button-container{display:none}.payment-create .collapse-button-container .collapse-button{width:100%;display:flex;justify-content:center}@media (max-width:480px){.payment-create .page-actions,.payment-index .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.payment-create .page-actions button,.payment-index .page-actions button{margin-bottom:10px}.payment-create .header-button-container,.payment-index .header-button-container{display:none}.payment-create .collapse-button-container,.payment-index .collapse-button-container{display:block}}.payment-view-page{padding-left:570px!important}.payment-view-page .payment-sidebar{height:100vh;height:100%;left:240px;padding:60px 0 10px;position:fixed;top:0;width:300px;z-index:25;background:#fff}.payment-view-page .inv-search{background:#f9fbff!important}.payment-view-page .side-payment{padding:12px 16px;display:flex;justify-content:space-between;border-bottom:1px solid rgba(185,193,209,.41);cursor:pointer}.payment-view-page .side-payment:last-child{margin-bottom:98px}.payment-view-page .side-payment.router-link-exact-active{border-left:3px solid #5851d8;background-color:#f9fbff}.payment-view-page .side-payment:hover{background-color:#f9fbff}.payment-view-page .side-payment .left .inv-name{font-style:normal;font-weight:400;font-size:14px;line-height:21px;text-transform:capitalize;color:#040405;margin-bottom:6px}.payment-view-page .side-payment .left .inv-number{font-style:normal;font-weight:500;font-size:12px;line-height:18px;color:#a5acc1;margin-bottom:6px}.payment-view-page .side-payment .left .inv-status{font-style:normal;font-weight:400;font-size:10px;line-height:15px;padding:2px 10px;display:inline-block}.payment-view-page .side-payment .right .inv-amount{font-style:normal;font-weight:600;font-size:20px;line-height:30px;text-align:right;color:#263b5e}.payment-view-page .side-payment .right .inv-date{font-style:normal;font-weight:400;font-size:14px;line-height:21px;text-align:right;color:#a5acc1}.payment-view-page .no-result{color:#b9c1d1;display:flex;justify-content:center;margin-top:20px}.payment-view-page .side-header{height:100px;display:flex;justify-content:space-between;align-items:center;padding:30px 15px;border-bottom:1px solid rgba(185,193,209,.41)}.payment-view-page .side-header .inv-button{background:#f9fbff;border:1px solid #ebf1fa;box-sizing:border-box;color:#b9c1d1;box-shadow:none!important}.payment-view-page .side-content{overflow-y:scroll;height:100%}.payment-view-page .payment-view-page-container{display:flex;flex-direction:column;height:75vh;min-height:0;overflow:hidden}.payment-view-page .frame-style{flex:1 1 auto;border:1px solid #b9c1d1;border-radius:7px}.payment-view-page .inv-filter-fields-btn:focus,.payment-view-page .inv-filter-sorting-btn:focus{border-color:inherit;box-shadow:none;outline:none!important}.payment-view-page .filter-container{margin-left:12px}.payment-view-page .filter-container .filter-title{padding:5px 10px;border-bottom:1px solid rgba(185,193,209,.41);margin-bottom:10px}.payment-view-page .filter-container .filter-items{display:flex;padding:4px 9px;cursor:pointer}.payment-view-page .filter-container .filter-items:first-child{margin-top:auto}.payment-view-page .filter-container .inv-label{font-style:normal;font-weight:400;font-size:14px;line-height:12px;text-transform:capitalize;color:#040405;margin-bottom:6px;margin-left:10px;cursor:pointer}.payment-view-page .filter-container .base-input{width:20%}.payment-view-page .filter-container .dropdown-container{padding:0!important;left:auto;right:0;width:167px}.payment-view-page .filter-payment-date .vdp-datepicker div .vdp-datepicker__clear-button{margin-left:-21px;margin-top:2px;font-size:20px;font-weight:800}.payment-view-page .date-group{display:flex}.payment-view-page .to-text{padding:8px}@media (max-width:768px){.payment-view-page{padding-left:310px!important}.payment-sidebar{transition:all .2s;left:0!important}}.items .table-loader{padding:25px 0;display:flex;justify-content:center;align-items:center}@media (max-width:480px){.items .page-actions{position:relative;transform:none;display:flex;flex-wrap:wrap}.items .page-actions button{margin-bottom:10px}.items .page-header{margin-bottom:5px}.items .table-actions{margin-top:0!important}}.item-create .collapse-button{width:auto}@media (max-width:480px){.item-create .collapse-button{width:100%;display:flex;justify-content:center}}.inv-status-overdue{background:#fed7d7;font-size:13px;color:#9b2c2c;padding:5px 10px}.inv-status-paid{background:#d5eed0;font-size:13px;color:#354930;padding:5px 10px}.inv-status-unpaid{background:#f8edcb;font-size:13px;color:#6c432e;padding:5px 10px}.inv-status-sent{background:rgba(246,208,154,.4);font-size:13px;color:#a96e1a;padding:5px 10px}.inv-status-viewed{background:#c9e3ec;font-size:13px;color:#1e576c;padding:5px 10px}.inv-status-completed{background:#d5eed0;font-size:13px;color:#354930;padding:5px 10px}.inv-status-pending{background:#fed7d7;font-size:13px;color:#9b2c2c;padding:5px 10px}.inv-status-partially_paid{background:#c9e3ec;font-size:13px;color:#1e576c;padding:5px 10px}.inv-status-draft{background:#f8edcb;font-size:13px;color:#6c432e;padding:5px 10px}.est-status-expired{background:#fed7d7;font-size:13px;color:#9b2c2c;padding:5px 10px}.est-status-accepted{background:#d5eed0;font-size:13px;color:#354930;padding:5px 10px}.est-status-sent{background:rgba(246,208,154,.4);font-size:13px;color:#a96e1a;padding:5px 10px}.est-status-viewed{background:#c9e3ec;font-size:13px;color:#1e576c;padding:5px 10px}.est-status-pending{background:#fed7d7;font-size:13px;color:#9b2c2c;padding:5px 10px}.est-status-rejected{background:#e1e0ea;font-size:13px;color:#312f57;padding:5px 10px}.est-status-draft{background:#f8edcb;font-size:13px;color:#6c432e;padding:5px 10px} \ No newline at end of file +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.sw-h1{font-size:35px}.sw-h1,.sw-h2{font-weight:600;color:#040405}.sw-h2{font-size:28px}.sw-h3{font-size:24.5px}.sw-h3,.sw-h4{font-weight:600;color:#040405}.sw-h4{font-size:21px}.sw-h5{font-size:17.5px}.sw-h5,.sw-h6{font-weight:600;color:#040405}.sw-h6{font-size:14px}.sw-page-title{font-weight:600;color:#040405;font-size:24.5px}.sw-section-title{font-weight:500;color:#040405;font-size:17.5px}.h1,.h2,.h3,.h4,.h5,.h6,.page-title,.section-title{font-family:Poppins;font-family:sans-serif}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:1440px}}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-preview{min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-remove{top:-24px;right:-24px}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid #cbd5e0;background-color:#cbd5e0}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-success-mark{opacity:0}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{z-index:500;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{display:none;z-index:1000;left:50%;top:50%;margin-top:-8px;margin-left:-40px}.dropzone .dz-preview .dz-progress .dz-upload{transition:width .3s ease-in-out}.dropzone .dz-preview .dz-error-message{z-index:1000;top:130px;left:-10px}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview.dz-success .dz-success-mark{opacity:1;-webkit-animation:passing-through 3s cubic-bezier(.77,0,.175,1);animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(.77,0,.175,1);animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview.dz-processing .dz-progress{display:block;opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview.dz-complete .dz-success-mark{opacity:0;transition:all .2s linear}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.switch[type=checkbox]{height:0;width:0;visibility:hidden}.switch-label{text-indent:-9999px;width:35px;border-radius:16px}.switch-label .switch-circle{position:absolute;top:-3px;left:0;width:20px;height:20px;background:#a0aec0;border-radius:15px;transition:.3s}.switch-label:active .switch-circle{width:20px}.switch:checked+.switch-label{background:#bcb9ef}.switch:checked+.switch-label .switch-circle{left:100%;transform:translateX(-100%);background:#5851d8}.checkbox input[type=checkbox]{-webkit-print-color-adjust:exact;color-adjust:exact;background-origin:border-box}.checkbox input[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}.radio input[type=radio]{-webkit-print-color-adjust:exact;color-adjust:exact;background-origin:border-box}.radio input[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}.flatpickr-calendar.open{z-index:40!important}.base-date-picker-input:focus{box-shadow:none}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{box-shadow:none;background-color:#5851d8;boader-color:#5851d8;color:#fff}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e2e8f0;border-color:#e2e8f0}.header-editior .editor-menu-bar{margin-left:.6px;margin-right:0}.editor__content .ProseMirror{border-radius:5px;min-height:200px;border:1px solid #cbd5e0}.editor__content .ProseMirror.ProseMirror-focused{border:1px solid #5851d8;outline:none}.editor__content pre{padding:.7rem 1rem;border-radius:5px;font-size:.8rem;overflow-x:auto;background-color:#2d3748;color:#fff}.editor__content pre code{display:block}.editor__content *{caret-color:currentColor}.editor__content ul{list-style-type:disc!important}.editor__content ol,.editor__content ul{display:block!important;-webkit-margin-before: 1em!important;margin-block-start: 1em!important;-webkit-margin-after:1em!important;margin-block-end:1em!important;-webkit-margin-start:0!important;margin-inline-start:0!important;-webkit-margin-end:0!important;margin-inline-end:0!important;-webkit-padding-start:40px!important;padding-inline-start:40px!important}.editor__content ol{list-style-type:decimal}.editor__content blockquote{border-left-width:3px!important;border-left-style:solid!important;border-left-color:#cbd5e0;color:#2d3748;padding-left:.8rem!important;font-style:italic!important}.editor__content h1{display:block;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;margin-inline-end:0;font-weight:700;font-size:2em;-webkit-margin-before:.67em;margin-block-start:.67em;-webkit-margin-after:.67em;margin-block-end:.67em}.editor__content h2{display:block;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;margin-inline-end:0;font-weight:700;font-size:1.5em;-webkit-margin-before:.83em;margin-block-start:.83em;-webkit-margin-after: .83em;margin-block-end: .83em}.editor__content h3{display:block;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;margin-inline-end:0;font-weight:700;font-size:1.17em;-webkit-margin-before:1em;margin-block-start:1em;-webkit-margin-after:1em;margin-block-end:1em}.flat-table tr:last-child td{border:none!important}.table-component__filter{align-self:flex-end;position:relative}.table-component__filter__field{padding:.15em 1.25em .15em .75em;border:1px solid #f7fafc;font-size:15px;border-radius:3px}.table-component__filter__field:focus{outline:0;border-color:#5851d8}.table-component__table{border-spacing:0 15px}.asc-direction,.desc-direction{display:none}.table-component__th--sort-asc .asc-direction,.table-component__th--sort-desc .desc-direction{display:inline}.table-component .pagination .page-item.active .page-link{color:#fff!important}.table-component .pagination a i{padding:.5rem .75rem;margin-left:-1px}table.full-width{width:100%}.selectall{cursor:pointer;z-index:10}.table-component td>span:first-child{background:#ebf1fa;color:#5851d8;display:none;font-size:10px;font-weight:700;padding:5px;left:0;position:absolute;text-transform:uppercase;top:0}.select-all-label{display:none!important}@media (max-width:768px){.select-all-label{display:inline!important;color:#353182;cursor:pointer}.selectall{top:20px}.table-component .dropdown-group{position:absolute;visibility:visible;top:15px;right:10px}.table-component thead{left:-9999px;position:absolute;visibility:hidden}.table-component tr{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:50px;position:relative}.table-component td{margin:0 -1px -1px 0;padding-top:40px!important;position:relative;width:50%;left:0;border:1px solid #f7fafc}.table-component td:not(:first-child){text-align:center!important}.table-component td:first-child{display:flex;justify-content:space-between;flex:1 100%;height:50px;padding-top:25px!important;align-items:center;border-bottom-left-radius:0!important;border-top-left-radius:5px!important;border-top-right-radius:5px!important}.table-component td:last-child{position:unset;visibility:hidden;height:0!important;padding:0!important}.table-component td:nth-last-child(3){border-bottom-left-radius:5px!important}.table-component td:nth-last-child(2){border-bottom-right-radius:5px!important}.table-component td>span:first-child{display:block}.table-component .dropdown-container{right:0;left:120px}}.wizard .indicator-line{border-width:5px;width:530px}.wizard .center{margin-top:-11px;width:105%}.wizard .steps{float:left;border-width:5px;height:25px;width:25px}@media (max-width:480px){.wizard .indicator-line{width:90%}}.space-x-1>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.25rem*var(--space-x-reverse));margin-left:calc(0.25rem*(1 - var(--space-x-reverse)))}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.bg-transparent{background-color:transparent}.bg-black{--bg-opacity:1;background-color:#040405;background-color:rgba(4,4,5,var(--bg-opacity))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#edf2f7;background-color:rgba(237,242,247,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#e2e8f0;background-color:rgba(226,232,240,var(--bg-opacity))}.bg-gray-400{--bg-opacity:1;background-color:#cbd5e0;background-color:rgba(203,213,224,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#a0aec0;background-color:rgba(160,174,192,var(--bg-opacity))}.bg-gray-700{--bg-opacity:1;background-color:#4a5568;background-color:rgba(74,85,104,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fff5f5;background-color:rgba(255,245,245,var(--bg-opacity))}.bg-red-200{--bg-opacity:1;background-color:#fed7d7;background-color:rgba(254,215,215,var(--bg-opacity))}.bg-teal-100{--bg-opacity:1;background-color:#e6fffa;background-color:rgba(230,255,250,var(--bg-opacity))}.bg-blue-100{--bg-opacity:1;background-color:#ebf8ff;background-color:rgba(235,248,255,var(--bg-opacity))}.bg-primary-200{--bg-opacity:1;background-color:#d5d4f5;background-color:rgba(213,212,245,var(--bg-opacity))}.bg-primary-400{--bg-opacity:1;background-color:#8a85e4;background-color:rgba(138,133,228,var(--bg-opacity))}.bg-primary-500{--bg-opacity:1;background-color:#5851d8;background-color:rgba(88,81,216,var(--bg-opacity))}.bg-danger{--bg-opacity:1;background-color:#fb7178;background-color:rgba(251,113,120,var(--bg-opacity))}.bg-success{--bg-opacity:1;background-color:#00c99c;background-color:rgba(0,201,156,var(--bg-opacity))}.bg-warning{--bg-opacity:1;background-color:#f3af4e;background-color:rgba(243,175,78,var(--bg-opacity))}.bg-info{--bg-opacity:1;background-color:#15b2ec;background-color:rgba(21,178,236,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.hover\:bg-gray-200:hover{--bg-opacity:1;background-color:#edf2f7;background-color:rgba(237,242,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#e2e8f0;background-color:rgba(226,232,240,var(--bg-opacity))}.hover\:bg-primary-50:hover{--bg-opacity:1;background-color:#f7f6fd;background-color:rgba(247,246,253,var(--bg-opacity))}.hover\:bg-primary-100:hover{--bg-opacity:1;background-color:#eeeefb;background-color:rgba(238,238,251,var(--bg-opacity))}.hover\:bg-primary-200:hover{--bg-opacity:1;background-color:#d5d4f5;background-color:rgba(213,212,245,var(--bg-opacity))}.hover\:bg-primary-400:hover{--bg-opacity:1;background-color:#8a85e4;background-color:rgba(138,133,228,var(--bg-opacity))}.hover\:bg-danger:hover{--bg-opacity:1;background-color:#fb7178;background-color:rgba(251,113,120,var(--bg-opacity))}.hover\:bg-success:hover{--bg-opacity:1;background-color:#00c99c;background-color:rgba(0,201,156,var(--bg-opacity))}.hover\:bg-warning:hover{--bg-opacity:1;background-color:#f3af4e;background-color:rgba(243,175,78,var(--bg-opacity))}.hover\:bg-info:hover{--bg-opacity:1;background-color:#15b2ec;background-color:rgba(21,178,236,var(--bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(90deg,var(--gradient-color-stops))}.bg-gradient-to-b{background-image:linear-gradient(180deg,var(--gradient-color-stops))}.from-gray-300{--gradient-from-color:#e2e8f0;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(226,232,240,0))}.from-red-500{--gradient-from-color:#f56565;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(245,101,101,0))}.from-primary-500{--gradient-from-color:#5851d8;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(88,81,216,0))}.to-gray-400{--gradient-to-color:#cbd5e0}.to-red-600{--gradient-to-color:#e53e3e}.to-primary-400{--gradient-to-color:#8a85e4}.bg-opacity-25,.hover\:bg-opacity-25:hover{--bg-opacity:0.25}.hover\:bg-opacity-75:hover{--bg-opacity:0.75}.bg-no-repeat{background-repeat:no-repeat}.bg-cover{background-size:cover}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f7fafc;border-color:rgba(247,250,252,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#e2e8f0;border-color:rgba(226,232,240,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-primary-400{--border-opacity:1;border-color:#8a85e4;border-color:rgba(138,133,228,var(--border-opacity))}.border-primary-500{--border-opacity:1;border-color:#5851d8;border-color:rgba(88,81,216,var(--border-opacity))}.border-danger{--border-opacity:1;border-color:#fb7178;border-color:rgba(251,113,120,var(--border-opacity))}.border-success{--border-opacity:1;border-color:#00c99c;border-color:rgba(0,201,156,var(--border-opacity))}.border-warning{--border-opacity:1;border-color:#f3af4e;border-color:rgba(243,175,78,var(--border-opacity))}.border-info{--border-opacity:1;border-color:#15b2ec;border-color:rgba(21,178,236,var(--border-opacity))}.hover\:border-gray-400:hover{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.hover\:border-gray-500:hover{--border-opacity:1;border-color:#a0aec0;border-color:rgba(160,174,192,var(--border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.focus\:border-primary-400:focus{--border-opacity:1;border-color:#8a85e4;border-color:rgba(138,133,228,var(--border-opacity))}.focus\:border-primary-500:focus{--border-opacity:1;border-color:#5851d8;border-color:rgba(88,81,216,var(--border-opacity))}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl-none{border-top-left-radius:0}.rounded-tr-none{border-top-right-radius:0}.rounded-br-none{border-bottom-right-radius:0}.rounded-bl-none{border-bottom-left-radius:0}.rounded-tr-sm{border-top-right-radius:.125rem}.rounded-br-sm{border-bottom-right-radius:.125rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.first\:rounded-tl-md:first-child{border-top-left-radius:.375rem}.first\:rounded-bl-md:first-child{border-bottom-left-radius:.375rem}.last\:rounded-tr-md:last-child{border-top-right-radius:.375rem}.last\:rounded-br-md:last-child{border-bottom-right-radius:.375rem}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border{border-width:1px}.border-t-0{border-top-width:0}.border-r-0{border-right-width:0}.border-t-2{border-top-width:2px}.border-b-2{border-bottom-width:2px}.border-b-3{border-bottom-width:3px}.border-l-3{border-left-width:3px}.border-r-4{border-right-width:4px}.border-b-4{border-bottom-width:4px}.border-l-4{border-left-width:4px}.border-t-8{border-top-width:8px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.last\:border-b-0:last-child{border-bottom-width:0}.focus\:border:focus{border-width:1px}.box-border{box-sizing:border-box}.cursor-auto{cursor:auto}.cursor-pointer{cursor:pointer}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.content-center{align-content:center}.self-end{align-self:flex-end}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0{flex-shrink:0}.float-right{float:right}.float-left{float:left}.float-none{float:none}.font-base{font-family:Poppins,sans-serif}.font-thin{font-weight:200}.font-light{font-weight:300}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-black{font-weight:900}.h-0{height:0}.h-1{height:.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-32{height:8rem}.h-40{height:10rem}.h-130{height:560px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.m-6{margin:1.5rem}.my-0{margin-top:0;margin-bottom:0}.mx-0{margin-left:0;margin-right:0}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.mr-5{margin-right:1.25rem}.mb-5{margin-bottom:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-8{margin-top:2rem}.mb-8{margin-bottom:2rem}.mt-10{margin-top:2.5rem}.mb-10{margin-bottom:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mb-32{margin-bottom:8rem}.ml-56{margin-left:14rem}.mt-2\.5{margin-top:.625rem}.-mr-1{margin-right:-.25rem}.-ml-1{margin-left:-.25rem}.-mt-2{margin-top:-.5rem}.-ml-2{margin-left:-.5rem}.-mt-3{margin-top:-.75rem}.first\:mt-6:first-child{margin-top:1.5rem}.max-h-60{max-height:240px}.max-h-130{max-height:560px}.max-w-sm{max-width:24rem}.max-w-lg{max-width:32rem}.max-w-full{max-width:100%}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.hover\:opacity-100:hover,.opacity-100{opacity:1}.focus\:outline-none:focus,.outline-none{outline:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-10{padding:2.5rem}.py-0{padding-top:0;padding-bottom:0}.px-0{padding-left:0;padding-right:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pr-5{padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pt-8{padding-top:2rem}.pr-8{padding-right:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pr-10{padding-right:2.5rem}.pb-10{padding-bottom:2.5rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pt-16{padding-top:4rem}.pr-20{padding-right:5rem}.pl-20{padding-left:5rem}.pt-24{padding-top:6rem}.pb-32{padding-bottom:8rem}.pt-1\.5{padding-top:.375rem}.placeholder-gray-300::-moz-placeholder{--placeholder-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--placeholder-opacity))}.placeholder-gray-300:-ms-input-placeholder{--placeholder-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--placeholder-opacity))}.placeholder-gray-300::placeholder{--placeholder-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--placeholder-opacity))}.placeholder-gray-400::-moz-placeholder{--placeholder-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--placeholder-opacity))}.placeholder-gray-400:-ms-input-placeholder{--placeholder-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--placeholder-opacity))}.placeholder-gray-400::placeholder{--placeholder-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--placeholder-opacity))}.placeholder-gray-500::-moz-placeholder{--placeholder-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--placeholder-opacity))}.placeholder-gray-500:-ms-input-placeholder{--placeholder-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--placeholder-opacity))}.placeholder-gray-500::placeholder{--placeholder-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--placeholder-opacity))}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-auto{top:auto}.resize-none{resize:none}.resize{resize:both}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-xl{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-lg:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.fill-current{fill:currentColor}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-current{color:currentColor}.text-black{--text-opacity:1;color:#040405;color:rgba(4,4,5,var(--text-opacity))}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-gray-100{--text-opacity:1;color:#f7fafc;color:rgba(247,250,252,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#2d3748;color:rgba(45,55,72,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.text-red-700{--text-opacity:1;color:#c53030;color:rgba(197,48,48,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#276749;color:rgba(39,103,73,var(--text-opacity))}.text-teal-500{--text-opacity:1;color:#38b2ac;color:rgba(56,178,172,var(--text-opacity))}.text-teal-900{--text-opacity:1;color:#234e52;color:rgba(35,78,82,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#63b3ed;color:rgba(99,179,237,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#2c5282;color:rgba(44,82,130,var(--text-opacity))}.text-indigo-900{--text-opacity:1;color:#3c366b;color:rgba(60,54,107,var(--text-opacity))}.text-primary-400{--text-opacity:1;color:#8a85e4;color:rgba(138,133,228,var(--text-opacity))}.text-primary-500{--text-opacity:1;color:#5851d8;color:rgba(88,81,216,var(--text-opacity))}.text-primary-800{--text-opacity:1;color:#282461;color:rgba(40,36,97,var(--text-opacity))}.text-danger{--text-opacity:1;color:#fb7178;color:rgba(251,113,120,var(--text-opacity))}.text-success{--text-opacity:1;color:#00c99c;color:rgba(0,201,156,var(--text-opacity))}.text-warning{--text-opacity:1;color:#f3af4e;color:rgba(243,175,78,var(--text-opacity))}.text-info{--text-opacity:1;color:#15b2ec;color:rgba(21,178,236,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-600:hover{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.hover\:text-gray-700:hover{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.underline{text-decoration:underline}.line-through{text-decoration:line-through}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.ordinal{--font-variant-numeric-ordinal:var(--tailwind-empty,/*!*/ /*!*/);--font-variant-numeric-slashed-zero:var(--tailwind-empty,/*!*/ /*!*/);--font-variant-numeric-figure:var(--tailwind-empty,/*!*/ /*!*/);--font-variant-numeric-spacing:var(--tailwind-empty,/*!*/ /*!*/);--font-variant-numeric-fraction:var(--tailwind-empty,/*!*/ /*!*/);font-variant-numeric:var(--font-variant-numeric-ordinal) var(--font-variant-numeric-slashed-zero) var(--font-variant-numeric-figure) var(--font-variant-numeric-spacing) var(--font-variant-numeric-fraction);--font-variant-numeric-ordinal:ordinal}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.invisible{visibility:hidden}.truncate,.whitespace-no-wrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis}.w-0{width:0}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-32{width:8rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-60{width:240px}.w-64{width:16rem}.w-88{width:22rem}.w-1\/2{width:50%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-0{z-index:0}.z-5{z-index:5}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.gap-3{grid-gap:.75rem;gap:.75rem}.gap-4{grid-gap:1rem;gap:1rem}.gap-6{grid-gap:1.5rem;gap:1.5rem}.gap-8{grid-gap:2rem;gap:2rem}.gap-x-4{grid-column-gap:1rem;-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{grid-row-gap:.5rem;row-gap:.5rem}.gap-y-6{grid-row-gap:1.5rem;row-gap:1.5rem}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-5{grid-column:span 5/span 5}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-10{grid-column:span 10/span 10}.col-span-12{grid-column:span 12/span 12}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.rotate-90{--transform-rotate:90deg}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-4{--transform-translate-y:1rem}.transition-all{transition-property:all}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform}.transition-opacity{transition-property:opacity}.ease-linear{transition-timing-function:linear}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.delay-200{transition-delay:.2s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%{transform:scale(0)}}@keyframes bounce{0%{transform:scale(0)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.sw-page{min-height:calc(100vh - 39px)!important}.sw-scroll::-webkit-scrollbar{width:4px;cursor:pointer}.sw-scroll::-webkit-scrollbar-track{background-color:#e5e7eb;cursor:pointer}.sw-scroll::-webkit-scrollbar-thumb{cursor:pointer;background-color:#a0aec0}.sw-border-gap-15{border-spacing:0 15px}.sw-border-gap-0{border-spacing:0}input:-webkit-autofill{background-color:transparent!important;-webkit-box-shadow:0 0 0 50px #fff inset}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div:hover{box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.tooltip{display:block!important;z-index:10000}.tooltip .tooltip-inner{background:#000;color:#fff;border-radius:16px;padding:5px 10px 4px}.tooltip .tooltip-arrow{width:0;height:0;border-style:solid;position:absolute;margin:5px;border-color:#000;z-index:1}.tooltip[x-placement^=top]{margin-bottom:5px}.tooltip[x-placement^=top] .tooltip-arrow{border-width:5px 5px 0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;bottom:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.tooltip[x-placement^=bottom]{margin-top:5px}.tooltip[x-placement^=bottom] .tooltip-arrow{border-width:0 5px 5px;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important;top:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.tooltip[x-placement^=right]{margin-left:5px}.tooltip[x-placement^=right] .tooltip-arrow{border-width:5px 5px 5px 0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important;left:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}.tooltip[x-placement^=left]{margin-right:5px}.tooltip[x-placement^=left] .tooltip-arrow{border-width:5px 0 5px 5px;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;right:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}.tooltip.popover .popover-inner{background:#f9f9f9;color:#000;padding:24px;border-radius:5px;box-shadow:0 5px 30px rgba(0,0,0,.1)}.tooltip.popover .popover-arrow{border-color:#f9f9f9}.tooltip[aria-hidden=true]{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s}.tooltip[aria-hidden=false]{visibility:visible;opacity:1;transition:opacity .15s}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#352dc9;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}.pace .pace-progress-inner{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #5851d8,0 0 5px #5851d8;opacity:1;transform:rotate(3deg) translateY(-4px)}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:15px;right:15px;width:14px;height:14px;border-color:#5851d8 transparent transparent #5851d8;border-style:solid;border-width:2px;border-radius:10px;-webkit-animation:pace-spinner .4s linear infinite;animation:pace-spinner .4s linear infinite}@-webkit-keyframes pace-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pace-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.shake{-webkit-animation:shake .82s cubic-bezier(.36,.07,.19,.97) both;animation:shake .82s cubic-bezier(.36,.07,.19,.97) both;transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;perspective:1000px}@-webkit-keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.swal-icon--custom{height:80px;width:80px}@media (max-width:768px){.table-component .sw-dropdown{position:absolute;visibility:visible;top:15px;right:10px}}@media (min-width:640px){.sm\:container{width:100%;max-width:640px}@media (min-width:768px){.sm\:container{max-width:768px}}@media (min-width:1024px){.sm\:container{max-width:1024px}}@media (min-width:1280px){.sm\:container{max-width:1280px}}@media (min-width:1440px){.sm\:container{max-width:1440px}}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-screen{height:100vh}.sm\:m-0{margin:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-4xl{max-width:56rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:pt-8{padding-top:2rem}.sm\:align-middle{vertical-align:middle}.sm\:w-7\/12{width:58.333333%}.sm\:w-full{width:100%}.sm\:gap-4{grid-gap:1rem;gap:1rem}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:scale-90{--transform-scale-x:.9;--transform-scale-y:.9}.sm\:scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.sm\:scale-100{--transform-scale-x:1;--transform-scale-y:1}.sm\:translate-y-0{--transform-translate-y:0}}@media (min-width:768px){.md\:container{width:100%}@media (min-width:640px){.md\:container{max-width:640px}}@media (min-width:768px){.md\:container{max-width:768px}}@media (min-width:1024px){.md\:container{max-width:1024px}}@media (min-width:1280px){.md\:container{max-width:1280px}}@media (min-width:1440px){.md\:container{max-width:1440px}}.md\:border-b{border-bottom-width:1px}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:justify-end{justify-content:flex-end}.md\:float-left{float:left}.md\:h-9{height:2.25rem}.md\:h-16{height:4rem}.md\:mt-0{margin-top:0}.md\:mb-0{margin-bottom:0}.md\:ml-0{margin-left:0}.md\:mt-2{margin-top:.5rem}.md\:mt-6{margin-top:1.5rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mt-8{margin-top:2rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-12{margin-top:3rem}.md\:p-8{padding:2rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pt-4{padding-top:1rem}.md\:pt-16{padding-top:4rem}.md\:pt-40{padding-top:10rem}.md\:pb-48{padding-bottom:12rem}.md\:relative{position:relative}.md\:text-right{text-align:right}.md\:w-9{width:2.25rem}.md\:w-auto{width:auto}.md\:w-2\/3{width:66.666667%}.md\:w-2\/6{width:33.333333%}.md\:w-7\/12{width:58.333333%}.md\:w-full{width:100%}.md\:gap-10{grid-gap:2.5rem;gap:2.5rem}.md\:gap-x-8{grid-column-gap:2rem;-moz-column-gap:2rem;column-gap:2rem}.md\:gap-y-4{grid-row-gap:1rem;row-gap:1rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-start-5{grid-column-start:5}}@media (min-width:1024px){.lg\:container{width:100%}@media (min-width:640px){.lg\:container{max-width:640px}}@media (min-width:768px){.lg\:container{max-width:768px}}@media (min-width:1024px){.lg\:container{max-width:1024px}}@media (min-width:1280px){.lg\:container{max-width:1280px}}@media (min-width:1440px){.lg\:container{max-width:1440px}}.lg\:border-t-0{border-top-width:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:flex-no-wrap{flex-wrap:nowrap}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:text-sm{font-size:.875rem}.lg\:text-2xl{font-size:1.5rem}.lg\:mt-0{margin-top:0}.lg\:mt-2{margin-top:.5rem}.lg\:ml-2{margin-left:.5rem}.lg\:mb-6{margin-bottom:1.5rem}.lg\:ml-6{margin-left:1.5rem}.lg\:pt-8{padding-top:2rem}.lg\:text-right{text-align:right}.lg\:w-auto{width:auto}.lg\:w-1\/2{width:50%}.lg\:w-7\/12{width:58.333333%}.lg\:w-9\/12{width:75%}.lg\:gap-6{grid-gap:1.5rem;gap:1.5rem}.lg\:gap-24{grid-gap:6rem;gap:6rem}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}}@media (min-width:1280px){.xl\:container{width:100%}@media (min-width:640px){.xl\:container{max-width:640px}}@media (min-width:768px){.xl\:container{max-width:768px}}@media (min-width:1024px){.xl\:container{max-width:1024px}}@media (min-width:1280px){.xl\:container{max-width:1280px}}@media (min-width:1440px){.xl\:container{max-width:1440px}}.xl\:block{display:block}.xl\:hidden{display:none}.xl\:h-12{height:3rem}.xl\:text-base{font-size:1rem}.xl\:text-lg{font-size:1.125rem}.xl\:text-3xl{font-size:1.875rem}.xl\:text-5xl{font-size:3rem}.xl\:leading-6{line-height:1.5rem}.xl\:leading-tight{line-height:1.25}.xl\:mx-8{margin-left:2rem;margin-right:2rem}.xl\:mt-0{margin-top:0}.xl\:ml-8{margin-left:2rem}.xl\:ml-64{margin-left:16rem}.xl\:p-4{padding:1rem}.xl\:pl-0{padding-left:0}.xl\:pl-96{padding-left:24rem}.xl\:text-right{text-align:right}.xl\:w-12{width:3rem}.xl\:w-64{width:16rem}.xl\:gap-8{grid-gap:2rem;gap:2rem}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:col-span-9{grid-column:span 9/span 9}}@media (min-width:1440px){.xxl\:container{width:100%}@media (min-width:640px){.xxl\:container{max-width:640px}}@media (min-width:768px){.xxl\:container{max-width:768px}}@media (min-width:1024px){.xxl\:container{max-width:1024px}}@media (min-width:1280px){.xxl\:container{max-width:1280px}}@media (min-width:1440px){.xxl\:container{max-width:1440px}}.xxl\:col-span-2{grid-column:span 2/span 2}.xxl\:col-span-10{grid-column:span 10/span 10}} \ No newline at end of file diff --git a/public/assets/css/crater.css.map b/public/assets/css/crater.css.map index 228bf20d..92ee2ed0 100644 --- a/public/assets/css/crater.css.map +++ b/public/assets/css/crater.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./resources/assets/sass/crater.scss","webpack:///./node_modules/bootstrap/scss/bootstrap.scss","webpack:///./node_modules/bootstrap/scss/_root.scss","webpack:///./node_modules/bootstrap/scss/_reboot.scss","webpack:///./node_modules/bootstrap/scss/vendor/_rfs.scss","webpack:///./node_modules/bootstrap/scss/mixins/_hover.scss","webpack:///./node_modules/bootstrap/scss/_type.scss","webpack:///./node_modules/bootstrap/scss/mixins/_lists.scss","webpack:///./node_modules/bootstrap/scss/_images.scss","webpack:///./node_modules/bootstrap/scss/mixins/_image.scss","webpack:///./node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack:///./node_modules/bootstrap/scss/_code.scss","webpack:///./node_modules/bootstrap/scss/_grid.scss","webpack:///./node_modules/bootstrap/scss/mixins/_grid.scss","webpack:///./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack:///./node_modules/bootstrap/scss/mixins/_grid-framework.scss","webpack:///./node_modules/bootstrap/scss/_tables.scss","webpack:///./node_modules/bootstrap/scss/mixins/_table-row.scss","webpack:///./node_modules/bootstrap/scss/_forms.scss","webpack:///./node_modules/bootstrap/scss/mixins/_transition.scss","webpack:///./node_modules/bootstrap/scss/mixins/_forms.scss","webpack:///./node_modules/bootstrap/scss/mixins/_gradients.scss","webpack:///./node_modules/bootstrap/scss/_buttons.scss","webpack:///./node_modules/bootstrap/scss/mixins/_buttons.scss","webpack:///./node_modules/bootstrap/scss/_transitions.scss","webpack:///./node_modules/bootstrap/scss/_dropdown.scss","webpack:///./node_modules/bootstrap/scss/mixins/_caret.scss","webpack:///./node_modules/bootstrap/scss/mixins/_nav-divider.scss","webpack:///./node_modules/bootstrap/scss/_button-group.scss","webpack:///./node_modules/bootstrap/scss/_input-group.scss","webpack:///./node_modules/bootstrap/scss/_custom-forms.scss","webpack:///./node_modules/bootstrap/scss/_nav.scss","webpack:///./node_modules/bootstrap/scss/_navbar.scss","webpack:///./node_modules/bootstrap/scss/_card.scss","webpack:///./node_modules/bootstrap/scss/_breadcrumb.scss","webpack:///./node_modules/bootstrap/scss/_pagination.scss","webpack:///./node_modules/bootstrap/scss/mixins/_pagination.scss","webpack:///./node_modules/bootstrap/scss/_badge.scss","webpack:///./node_modules/bootstrap/scss/mixins/_badge.scss","webpack:///./node_modules/bootstrap/scss/_jumbotron.scss","webpack:///./node_modules/bootstrap/scss/_alert.scss","webpack:///./node_modules/bootstrap/scss/mixins/_alert.scss","webpack:///./node_modules/bootstrap/scss/_progress.scss","webpack:///./node_modules/bootstrap/scss/_media.scss","webpack:///./node_modules/bootstrap/scss/_list-group.scss","webpack:///./node_modules/bootstrap/scss/mixins/_list-group.scss","webpack:///./node_modules/bootstrap/scss/_close.scss","webpack:///./node_modules/bootstrap/scss/_toasts.scss","webpack:///./node_modules/bootstrap/scss/_modal.scss","webpack:///./node_modules/bootstrap/scss/_tooltip.scss","webpack:///./node_modules/bootstrap/scss/mixins/_reset-text.scss","webpack:///./node_modules/bootstrap/scss/_popover.scss","webpack:///./node_modules/bootstrap/scss/_carousel.scss","webpack:///./node_modules/bootstrap/scss/mixins/_clearfix.scss","webpack:///./node_modules/bootstrap/scss/_spinners.scss","webpack:///./node_modules/bootstrap/scss/utilities/_align.scss","webpack:///./node_modules/bootstrap/scss/mixins/_background-variant.scss","webpack:///./node_modules/bootstrap/scss/utilities/_background.scss","webpack:///./node_modules/bootstrap/scss/utilities/_borders.scss","webpack:///./node_modules/bootstrap/scss/utilities/_display.scss","webpack:///./node_modules/bootstrap/scss/utilities/_embed.scss","webpack:///./node_modules/bootstrap/scss/utilities/_flex.scss","webpack:///./node_modules/bootstrap/scss/utilities/_float.scss","webpack:///./node_modules/bootstrap/scss/utilities/_overflow.scss","webpack:///./node_modules/bootstrap/scss/utilities/_position.scss","webpack:///./node_modules/bootstrap/scss/utilities/_screenreaders.scss","webpack:///./node_modules/bootstrap/scss/mixins/_screen-reader.scss","webpack:///./node_modules/bootstrap/scss/utilities/_shadows.scss","webpack:///./node_modules/bootstrap/scss/utilities/_sizing.scss","webpack:///./node_modules/bootstrap/scss/utilities/_stretched-link.scss","webpack:///./node_modules/bootstrap/scss/utilities/_spacing.scss","webpack:///./node_modules/bootstrap/scss/utilities/_text.scss","webpack:///./node_modules/bootstrap/scss/mixins/_text-truncate.scss","webpack:///./node_modules/bootstrap/scss/mixins/_text-emphasis.scss","webpack:///./node_modules/bootstrap/scss/mixins/_text-hide.scss","webpack:///./node_modules/bootstrap/scss/utilities/_visibility.scss","webpack:///./node_modules/bootstrap/scss/_print.scss","webpack:///./node_modules/toastr/toastr.scss","webpack:///./resources/assets/sass/skins/skin-crater.scss","webpack:///./resources/assets/sass/base.scss","webpack:///./resources/assets/sass/layouts/layout.scss","webpack:///./resources/assets/sass/layouts/crater-sidebar.scss","webpack:///./resources/assets/sass/partials/header.scss","webpack:///./resources/assets/sass/partials/sidebar.scss","webpack:///./resources/assets/sass/components/base/base-date-picker.scss","webpack:///./resources/assets/sass/components/base/base-input.scss","webpack:///./resources/assets/sass/components/base/base-button.scss","webpack:///./resources/assets/sass/components/base/base-popup.scss","webpack:///./resources/assets/sass/components/base/base-text-area.scss","webpack:///./resources/assets/sass/components/base/base-switch.scss","webpack:///./resources/assets/sass/components/base/base-loader/index.scss","webpack:///./resources/assets/sass/components/base/base-loader/animation/_mixins.scss","webpack:///./resources/assets/sass/components/base/base-prefix-input.scss","webpack:///./resources/assets/sass/components/v-tooltips.scss","webpack:///./resources/assets/sass/components/buttons.scss","webpack:///./resources/assets/sass/components/forms.scss","webpack:///./resources/assets/sass/components/cards.scss","webpack:///./resources/assets/sass/components/tabs.scss","webpack:///./resources/assets/sass/components/base-tabs.scss","webpack:///./resources/assets/sass/components/tables.scss","webpack:///./resources/assets/sass/components/hamburgers.scss","webpack:///./resources/assets/sass/components/transitions.scss","webpack:///./resources/assets/sass/components/charts.scss","webpack:///./resources/assets/sass/components/pace-loader.scss","webpack:///./resources/assets/sass/components/vue-tabs.scss","webpack:///./resources/assets/sass/components/vue-dropdown.scss","webpack:///./resources/assets/sass/components/vue-date-picker.scss","webpack:///./resources/assets/sass/components/vue-multi-select.scss","webpack:///./resources/assets/sass/components/customer-select.scss","webpack:///./resources/assets/sass/components/item-select.scss","webpack:///./resources/assets/sass/components/tax-select.scss","webpack:///./resources/assets/sass/components/avatar-cropper.scss","webpack:///./resources/assets/sass/components/payment-modes-modal.scss","webpack:///./resources/assets/sass/components/item-unit-modal.scss","webpack:///./resources/assets/sass/components/mail-test-modal.scss","webpack:///./resources/assets/sass/components/base-modal.scss","webpack:///./resources/assets/sass/components/item-modal.scss","webpack:///./resources/assets/sass/components/template-modal.scss","webpack:///./resources/assets/sass/components/customer-modal.scss","webpack:///./resources/assets/sass/components/tax-type-modal.scss","webpack:///./resources/assets/sass/components/category-modal.scss","webpack:///./resources/assets/sass/pages/dashboard.scss","webpack:///./resources/assets/sass/pages/login.scss","webpack:///./resources/assets/sass/pages/login-3.scss","webpack:///./resources/assets/sass/pages/404.scss","webpack:///./resources/assets/sass/pages/customization.scss","webpack:///./resources/assets/sass/pages/settings.scss","webpack:///./resources/assets/sass/pages/invoices/create.scss","webpack:///./resources/assets/sass/pages/invoices/view.scss","webpack:///./resources/assets/sass/pages/invoices/index.scss","webpack:///./resources/assets/sass/pages/estimates/create.scss","webpack:///./resources/assets/sass/pages/estimates/index.scss","webpack:///./resources/assets/sass/pages/estimates/view.scss","webpack:///./resources/assets/sass/pages/expenses.scss","webpack:///./resources/assets/sass/pages/payments.scss","webpack:///./resources/assets/sass/pages/wizard.scss","webpack:///./resources/assets/sass/pages/reports.scss","webpack:///./resources/assets/sass/pages/customers.scss","webpack:///./resources/assets/sass/pages/payment-view.scss","webpack:///./resources/assets/sass/pages/items.scss","webpack:///./resources/assets/sass/pages/statuses.scss"],"names":[],"mappings":"AAAA;;ACAA;;;;;GDOE;;AENF;EAGI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAKF;EACA;CFoBF;;AGpBA;;;EAGE;CHuBF;;AGpBA;EACE;EACA;EACA;EACA;CHuBF;;AGjBA;;;;;;;;;;EACE;CH6BF;;AGnBA;EACE;EACA;ECgFI;ED9EJ;EACA;EACA;EACA;EACA;CHsBF;;AGVA;EACE;CHaF;;AGJA;EACE;EACA;EACA;CHOF;;AGMA;;;;;;EACE;EACA;CHEF;;AGKA;EACE;EACA;CHFF;;AGaA;;EAEE;EACA;UAAA;EACA;EACA;EACA;UAAA;CHVF;;AGaA;EACE;EACA;EACA;CHVF;;AGaA;;;EAGE;EACA;CHVF;;AGaA;;;;EAIE;CHVF;;AGaA;EACE;CHVF;;AGaA;EACE;EACA;CHVF;;AGaA;EACE;CHVF;;AGaA;;EAEE;CHVF;;AGaA;ECxFI;CJ+EJ;;AGkBA;;EAEE;ECnGE;EDqGF;EACA;CHfF;;AGkBA;EAAM;CHdN;;AGeA;EAAM;CHXN;;AGkBA;EACE;EACA;EACA;CHfF;;AKjKE;EFmLE;EACA;CHdJ;;AGuBA;EACE;EACA;CHpBF;;AK3KE;EFkME;EACA;CHnBJ;;AG4BA;;;;EAIE;ECpJE;CJ4HJ;;AG4BA;EAEE;EAEA;EAEA;CH5BF;;AGoCA;EAEE;CHlCF;;AG0CA;EACE;EACA;CHvCF;;AG0CA;EAGE;EACA;CHzCF;;AGiDA;EACE;CH9CF;;AGiDA;EACE;EACA;EACA;EACA;EACA;CH9CF;;AGiDA;EAGE;CHhDF;;AGwDA;EAEE;EACA;CHtDF;;AG4DA;EAEE;CH1DF;;AGiEA;EACE;EACA;CH9DF;;AGiEA;;;;;EAKE;EACA;ECrPE;EDuPF;CH9DF;;AGiEA;;EAEE;CH9DF;;AGiEA;;EAEE;CH9DF;;AGoEA;EACE;CHjEF;;AGwEA;;;;EAIE;CHrEF;;AG8EI;;;;EACE;CHxEN;;AG8EA;;;;EAIE;EACA;CH3EF;;AG8EA;;EAEE;EACA;CH3EF;;AG+EA;;;;EASE;CHjFF;;AGoFA;EACE;EAEA;CHlFF;;AGqFA;EAME;EAEA;EACA;EACA;CHxFF;;AG6FA;EACE;EACA;EACA;EACA;EACA;ECjSI;EDmSJ;EACA;EACA;CH1FF;;AG6FA;EACE;CH1FF;;AG8FA;;EAEE;CH3FF;;AG8FA;EAKE;EACA;CH/FF;;AGsGA;EACE;CHnGF;;AG2GA;EACE;EACA;CHxGF;;AG+GA;EACE;CH5GF;;AG+GA;EACE;EACA;CH5GF;;AG+GA;EACE;CH5GF;;AGiHA;EACE;CH9GF;;AM5WA;;;;;;;;;;;;EAEE;EAEA;EACA;CNwXF;;AMpXA;;EFgHM;CJyQN;;AMxXA;;EF+GM;CJ8QN;;AM5XA;;EF8GM;CJmRN;;AMhYA;;EF6GM;CJwRN;;AMpYA;;EF4GM;CJ6RN;;AMxYA;;EF2GM;CJkSN;;AM3YA;EFyGM;EEvGJ;CN8YF;;AM1YA;EFmGM;EEjGJ;EACA;CN6YF;;AM3YA;EF8FM;EE5FJ;EACA;CN8YF;;AM5YA;EFyFM;EEvFJ;EACA;CN+YF;;AM7YA;EFoFM;EElFJ;EACA;CNgZF;;AMxYA;EACE;EACA;EACA;EACA;CN2YF;;AMnYA;;EFMI;EEHF;CNsYF;;AMnYA;;EAEE;EACA;CNsYF;;AM9XA;EC/EE;EACA;CPidF;;AM9XA;ECpFE;EACA;CPsdF;;AMhYA;EACE;CNmYF;;AMjYE;EACE;CNoYJ;;AM1XA;EFjCI;EEmCF;CN6XF;;AMzXA;EACE;EFeI;CJ8WN;;AMzXA;EACE;EF7CE;EE+CF;CN4XF;;AM1XE;EACE;CN6XJ;;AQhfA;ECIE;EAGA;CT8eF;;AQ/eA;EACE;EACA;EACA;EEXE;EDMF;EAGA;CTufF;;AQzeA;EAEE;CR2eF;;AQxeA;EACE;EACA;CR2eF;;AQxeA;EJkCI;EIhCF;CR2eF;;AWlhBA;EPuEI;EOrEF;EACA;CXqhBF;;AWlhBE;EACE;CXqhBJ;;AWhhBA;EACE;EP0DE;EOxDF;EACA;EDZE;CVgiBJ;;AWhhBE;EACE;EPkDA;EOhDA;CXmhBJ;;AW7gBA;EACE;EPyCE;EOvCF;CXghBF;;AW7gBE;EPoCE;EOlCA;EACA;CXghBJ;;AW3gBA;EACE;EACA;CX8gBF;;AYtjBE;ECDA;EACA;EACA;EACA;EACA;Cb2jBF;;AcxgBI;EFtDF;ICWI;GbwjBJ;CACF;;Ac9gBI;EFtDF;ICWI;Gb8jBJ;CACF;;AcphBI;EFtDF;ICWI;GbokBJ;CACF;;Ac1hBI;EFtDF;ICWI;Gb0kBJ;CACF;;AYhlBE;;;;;ECPA;EACA;EACA;EACA;EACA;Cb+lBF;;Ac5iBI;EFrCE;;IACE;GZslBN;CACF;;AcnjBI;EFrCE;;;IACE;GZ8lBN;CACF;;Ac3jBI;EFrCE;;;;IACE;GZumBN;CACF;;AcpkBI;EFrCE;;;;;IACE;GZinBN;CACF;;AY9lBE;ECrBA;EACA;EACA;EACA;CbunBF;;AY/lBE;EACE;EACA;CZkmBJ;;AYhmBI;;EAEE;EACA;CZmmBN;;AerpBE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACE;EACA;EACA;EACA;Cf6tBJ;;Ae1sBM;EACE;EACA;EACA;Cf6sBR;;Aa9qBE;EACE;EACA;CbirBJ;;AanrBE;EACE;EACA;CbsrBJ;;AaxrBE;EACE;EACA;Cb2rBJ;;Aa7rBE;EACE;EACA;CbgsBJ;;AalsBE;EACE;EACA;CbqsBJ;;AavsBE;EACE;EACA;Cb0sBJ;;AeluBM;EFMJ;EACA;EACA;CbguBF;;AenuBQ;EFPN;EAIA;Cb2uBF;;AexuBQ;EFPN;EAIA;CbgvBF;;Ae7uBQ;EFPN;EAIA;CbqvBF;;AelvBQ;EFPN;EAIA;Cb0vBF;;AevvBQ;EFPN;EAIA;Cb+vBF;;Ae5vBQ;EFPN;EAIA;CbowBF;;AejwBQ;EFPN;EAIA;CbywBF;;AetwBQ;EFPN;EAIA;Cb8wBF;;Ae3wBQ;EFPN;EAIA;CbmxBF;;AehxBQ;EFPN;EAIA;CbwxBF;;AerxBQ;EFPN;EAIA;Cb6xBF;;Ae1xBQ;EFPN;EAIA;CbkyBF;;Ae1xBM;EAAwB;Cf8xB9B;;Ae5xBM;EAAuB;CfgyB7B;;Ae7xBQ;EAAwB;CfiyBhC;;AejyBQ;EAAwB;CfqyBhC;;AeryBQ;EAAwB;CfyyBhC;;AezyBQ;EAAwB;Cf6yBhC;;Ae7yBQ;EAAwB;CfizBhC;;AejzBQ;EAAwB;CfqzBhC;;AerzBQ;EAAwB;CfyzBhC;;AezzBQ;EAAwB;Cf6zBhC;;Ae7zBQ;EAAwB;Cfi0BhC;;Aej0BQ;EAAwB;Cfq0BhC;;Aer0BQ;EAAwB;Cfy0BhC;;Aez0BQ;EAAwB;Cf60BhC;;Ae70BQ;EAAwB;Cfi1BhC;;Ae30BU;EFRR;Cbu1BF;;Ae/0BU;EFRR;Cb21BF;;Aen1BU;EFRR;Cb+1BF;;Aev1BU;EFRR;Cbm2BF;;Ae31BU;EFRR;Cbu2BF;;Ae/1BU;EFRR;Cb22BF;;Aen2BU;EFRR;Cb+2BF;;Aev2BU;EFRR;Cbm3BF;;Ae32BU;EFRR;Cbu3BF;;Ae/2BU;EFRR;Cb23BF;;Aen3BU;EFRR;Cb+3BF;;Ac13BI;EC9BE;IACE;IACA;IACA;Gf45BN;;Ea73BA;IACE;IACA;Gbg4BF;;Eal4BA;IACE;IACA;Gbq4BF;;Eav4BA;IACE;IACA;Gb04BF;;Ea54BA;IACE;IACA;Gb+4BF;;Eaj5BA;IACE;IACA;Gbo5BF;;Eat5BA;IACE;IACA;Gby5BF;;Eej7BI;IFMJ;IACA;IACA;Gb+6BA;;Eel7BM;IFPN;IAIA;Gb07BA;;Eev7BM;IFPN;IAIA;Gb+7BA;;Ee57BM;IFPN;IAIA;Gbo8BA;;Eej8BM;IFPN;IAIA;Gby8BA;;Eet8BM;IFPN;IAIA;Gb88BA;;Ee38BM;IFPN;IAIA;Gbm9BA;;Eeh9BM;IFPN;IAIA;Gbw9BA;;Eer9BM;IFPN;IAIA;Gb69BA;;Ee19BM;IFPN;IAIA;Gbk+BA;;Ee/9BM;IFPN;IAIA;Gbu+BA;;Eep+BM;IFPN;IAIA;Gb4+BA;;Eez+BM;IFPN;IAIA;Gbi/BA;;Eez+BI;IAAwB;Gf6+B5B;;Ee3+BI;IAAuB;Gf++B3B;;Ee5+BM;IAAwB;Gfg/B9B;;Eeh/BM;IAAwB;Gfo/B9B;;Eep/BM;IAAwB;Gfw/B9B;;Eex/BM;IAAwB;Gf4/B9B;;Ee5/BM;IAAwB;GfggC9B;;EehgCM;IAAwB;GfogC9B;;EepgCM;IAAwB;GfwgC9B;;EexgCM;IAAwB;Gf4gC9B;;Ee5gCM;IAAwB;GfghC9B;;EehhCM;IAAwB;GfohC9B;;EephCM;IAAwB;GfwhC9B;;EexhCM;IAAwB;Gf4hC9B;;Ee5hCM;IAAwB;GfgiC9B;;Ee1hCQ;IFRR;GbsiCA;;Ee9hCQ;IFRR;Gb0iCA;;EeliCQ;IFRR;Gb8iCA;;EetiCQ;IFRR;GbkjCA;;Ee1iCQ;IFRR;GbsjCA;;Ee9iCQ;IFRR;Gb0jCA;;EeljCQ;IFRR;Gb8jCA;;EetjCQ;IFRR;GbkkCA;;Ee1jCQ;IFRR;GbskCA;;Ee9jCQ;IFRR;Gb0kCA;;EelkCQ;IFRR;Gb8kCA;;EetkCQ;IFRR;GbklCA;CACF;;Ac9kCI;EC9BE;IACE;IACA;IACA;GfgnCN;;EajlCA;IACE;IACA;GbolCF;;EatlCA;IACE;IACA;GbylCF;;Ea3lCA;IACE;IACA;Gb8lCF;;EahmCA;IACE;IACA;GbmmCF;;EarmCA;IACE;IACA;GbwmCF;;Ea1mCA;IACE;IACA;Gb6mCF;;EeroCI;IFMJ;IACA;IACA;GbmoCA;;EetoCM;IFPN;IAIA;Gb8oCA;;Ee3oCM;IFPN;IAIA;GbmpCA;;EehpCM;IFPN;IAIA;GbwpCA;;EerpCM;IFPN;IAIA;Gb6pCA;;Ee1pCM;IFPN;IAIA;GbkqCA;;Ee/pCM;IFPN;IAIA;GbuqCA;;EepqCM;IFPN;IAIA;Gb4qCA;;EezqCM;IFPN;IAIA;GbirCA;;Ee9qCM;IFPN;IAIA;GbsrCA;;EenrCM;IFPN;IAIA;Gb2rCA;;EexrCM;IFPN;IAIA;GbgsCA;;Ee7rCM;IFPN;IAIA;GbqsCA;;Ee7rCI;IAAwB;GfisC5B;;Ee/rCI;IAAuB;GfmsC3B;;EehsCM;IAAwB;GfosC9B;;EepsCM;IAAwB;GfwsC9B;;EexsCM;IAAwB;Gf4sC9B;;Ee5sCM;IAAwB;GfgtC9B;;EehtCM;IAAwB;GfotC9B;;EeptCM;IAAwB;GfwtC9B;;EextCM;IAAwB;Gf4tC9B;;Ee5tCM;IAAwB;GfguC9B;;EehuCM;IAAwB;GfouC9B;;EepuCM;IAAwB;GfwuC9B;;EexuCM;IAAwB;Gf4uC9B;;Ee5uCM;IAAwB;GfgvC9B;;EehvCM;IAAwB;GfovC9B;;Ee9uCQ;IFRR;Gb0vCA;;EelvCQ;IFRR;Gb8vCA;;EetvCQ;IFRR;GbkwCA;;Ee1vCQ;IFRR;GbswCA;;Ee9vCQ;IFRR;Gb0wCA;;EelwCQ;IFRR;Gb8wCA;;EetwCQ;IFRR;GbkxCA;;Ee1wCQ;IFRR;GbsxCA;;Ee9wCQ;IFRR;Gb0xCA;;EelxCQ;IFRR;Gb8xCA;;EetxCQ;IFRR;GbkyCA;;Ee1xCQ;IFRR;GbsyCA;CACF;;AclyCI;EC9BE;IACE;IACA;IACA;Gfo0CN;;EaryCA;IACE;IACA;GbwyCF;;Ea1yCA;IACE;IACA;Gb6yCF;;Ea/yCA;IACE;IACA;GbkzCF;;EapzCA;IACE;IACA;GbuzCF;;EazzCA;IACE;IACA;Gb4zCF;;Ea9zCA;IACE;IACA;Gbi0CF;;Eez1CI;IFMJ;IACA;IACA;Gbu1CA;;Ee11CM;IFPN;IAIA;Gbk2CA;;Ee/1CM;IFPN;IAIA;Gbu2CA;;Eep2CM;IFPN;IAIA;Gb42CA;;Eez2CM;IFPN;IAIA;Gbi3CA;;Ee92CM;IFPN;IAIA;Gbs3CA;;Een3CM;IFPN;IAIA;Gb23CA;;Eex3CM;IFPN;IAIA;Gbg4CA;;Ee73CM;IFPN;IAIA;Gbq4CA;;Eel4CM;IFPN;IAIA;Gb04CA;;Eev4CM;IFPN;IAIA;Gb+4CA;;Ee54CM;IFPN;IAIA;Gbo5CA;;Eej5CM;IFPN;IAIA;Gby5CA;;Eej5CI;IAAwB;Gfq5C5B;;Een5CI;IAAuB;Gfu5C3B;;Eep5CM;IAAwB;Gfw5C9B;;Eex5CM;IAAwB;Gf45C9B;;Ee55CM;IAAwB;Gfg6C9B;;Eeh6CM;IAAwB;Gfo6C9B;;Eep6CM;IAAwB;Gfw6C9B;;Eex6CM;IAAwB;Gf46C9B;;Ee56CM;IAAwB;Gfg7C9B;;Eeh7CM;IAAwB;Gfo7C9B;;Eep7CM;IAAwB;Gfw7C9B;;Eex7CM;IAAwB;Gf47C9B;;Ee57CM;IAAwB;Gfg8C9B;;Eeh8CM;IAAwB;Gfo8C9B;;Eep8CM;IAAwB;Gfw8C9B;;Eel8CQ;IFRR;Gb88CA;;Eet8CQ;IFRR;Gbk9CA;;Ee18CQ;IFRR;Gbs9CA;;Ee98CQ;IFRR;Gb09CA;;Eel9CQ;IFRR;Gb89CA;;Eet9CQ;IFRR;Gbk+CA;;Ee19CQ;IFRR;Gbs+CA;;Ee99CQ;IFRR;Gb0+CA;;Eel+CQ;IFRR;Gb8+CA;;Eet+CQ;IFRR;Gbk/CA;;Ee1+CQ;IFRR;Gbs/CA;;Ee9+CQ;IFRR;Gb0/CA;CACF;;Act/CI;EC9BE;IACE;IACA;IACA;GfwhDN;;Eaz/CA;IACE;IACA;Gb4/CF;;Ea9/CA;IACE;IACA;GbigDF;;EangDA;IACE;IACA;GbsgDF;;EaxgDA;IACE;IACA;Gb2gDF;;Ea7gDA;IACE;IACA;GbghDF;;EalhDA;IACE;IACA;GbqhDF;;Ee7iDI;IFMJ;IACA;IACA;Gb2iDA;;Ee9iDM;IFPN;IAIA;GbsjDA;;EenjDM;IFPN;IAIA;Gb2jDA;;EexjDM;IFPN;IAIA;GbgkDA;;Ee7jDM;IFPN;IAIA;GbqkDA;;EelkDM;IFPN;IAIA;Gb0kDA;;EevkDM;IFPN;IAIA;Gb+kDA;;Ee5kDM;IFPN;IAIA;GbolDA;;EejlDM;IFPN;IAIA;GbylDA;;EetlDM;IFPN;IAIA;Gb8lDA;;Ee3lDM;IFPN;IAIA;GbmmDA;;EehmDM;IFPN;IAIA;GbwmDA;;EermDM;IFPN;IAIA;Gb6mDA;;EermDI;IAAwB;GfymD5B;;EevmDI;IAAuB;Gf2mD3B;;EexmDM;IAAwB;Gf4mD9B;;Ee5mDM;IAAwB;GfgnD9B;;EehnDM;IAAwB;GfonD9B;;EepnDM;IAAwB;GfwnD9B;;EexnDM;IAAwB;Gf4nD9B;;Ee5nDM;IAAwB;GfgoD9B;;EehoDM;IAAwB;GfooD9B;;EepoDM;IAAwB;GfwoD9B;;EexoDM;IAAwB;Gf4oD9B;;Ee5oDM;IAAwB;GfgpD9B;;EehpDM;IAAwB;GfopD9B;;EeppDM;IAAwB;GfwpD9B;;EexpDM;IAAwB;Gf4pD9B;;EetpDQ;IFRR;GbkqDA;;Ee1pDQ;IFRR;GbsqDA;;Ee9pDQ;IFRR;Gb0qDA;;EelqDQ;IFRR;Gb8qDA;;EetqDQ;IFRR;GbkrDA;;Ee1qDQ;IFRR;GbsrDA;;Ee9qDQ;IFRR;Gb0rDA;;EelrDQ;IFRR;Gb8rDA;;EetrDQ;IFRR;GbksDA;;Ee1rDQ;IFRR;GbssDA;;Ee9rDQ;IFRR;Gb0sDA;;EelsDQ;IFRR;Gb8sDA;CACF;;AgBlwDA;EACE;EACA;EACA;ChBqwDF;;AgBlwDE;;EAEE;EACA;EACA;ChBqwDJ;;AgBlwDE;EACE;EACA;ChBqwDJ;;AgBlwDE;EACE;ChBqwDJ;;AgB3vDE;;EAEE;ChB8vDJ;;AgBrvDA;EACE;ChBwvDF;;AgBtvDE;;EAEE;ChByvDJ;;AgBrvDI;;EAEE;ChBwvDN;;AgBlvDE;;;;EAIE;ChBqvDJ;;AgB5uDE;EACE;ChB+uDJ;;AK9yDE;EW2EI;EACA;ChBuuDN;;AiBzzDI;;;EAGE;CjB4zDN;;AiBxzDM;;;;EAIE;CjB2zDR;;AKh0DE;EYiBM;CjBmzDR;;AiBjzDQ;;EAEE;CjBozDV;;AiB/0DI;;;EAGE;CjBk1DN;;AiB90DM;;;;EAIE;CjBi1DR;;AKt1DE;EYiBM;CjBy0DR;;AiBv0DQ;;EAEE;CjB00DV;;AiBr2DI;;;EAGE;CjBw2DN;;AiBp2DM;;;;EAIE;CjBu2DR;;AK52DE;EYiBM;CjB+1DR;;AiB71DQ;;EAEE;CjBg2DV;;AiB33DI;;;EAGE;CjB83DN;;AiB13DM;;;;EAIE;CjB63DR;;AKl4DE;EYiBM;CjBq3DR;;AiBn3DQ;;EAEE;CjBs3DV;;AiBj5DI;;;EAGE;CjBo5DN;;AiBh5DM;;;;EAIE;CjBm5DR;;AKx5DE;EYiBM;CjB24DR;;AiBz4DQ;;EAEE;CjB44DV;;AiBv6DI;;;EAGE;CjB06DN;;AiBt6DM;;;;EAIE;CjBy6DR;;AK96DE;EYiBM;CjBi6DR;;AiB/5DQ;;EAEE;CjBk6DV;;AiB77DI;;;EAGE;CjBg8DN;;AiB57DM;;;;EAIE;CjB+7DR;;AKp8DE;EYiBM;CjBu7DR;;AiBr7DQ;;EAEE;CjBw7DV;;AiBn9DI;;;EAGE;CjBs9DN;;AiBl9DM;;;;EAIE;CjBq9DR;;AK19DE;EYiBM;CjB68DR;;AiB38DQ;;EAEE;CjB88DV;;AiBz+DI;;;EAGE;CjB4+DN;;AKz+DE;EYiBM;CjB49DR;;AiB19DQ;;EAEE;CjB69DV;;AgB74DI;EACE;EACA;EACA;ChBg5DN;;AgB34DI;EACE;EACA;EACA;ChB84DN;;AgBz4DA;EACE;EACA;ChB44DF;;AgB14DE;;;EAGE;ChB64DJ;;AgB14DE;EACE;ChB64DJ;;AgBz4DI;EACE;ChB44DN;;AKjhEE;EW4IM;EACA;ChBy4DR;;Acz9DI;EEiGA;IAEI;IACA;IACA;IACA;GhB23DN;;EgBx3DM;IACE;GhB23DR;CACF;;Act+DI;EEiGA;IAEI;IACA;IACA;IACA;GhBw4DN;;EgBr4DM;IACE;GhBw4DR;CACF;;Acn/DI;EEiGA;IAEI;IACA;IACA;IACA;GhBq5DN;;EgBl5DM;IACE;GhBq5DR;CACF;;AchgEI;EEiGA;IAEI;IACA;IACA;IACA;GhBk6DN;;EgB/5DM;IACE;GhBk6DR;CACF;;AgB56DI;EAEI;EACA;EACA;EACA;ChB86DR;;AgB36DQ;EACE;ChB86DV;;AkB3lEA;EACE;EACA;EACA;EACA;EdqHI;EclHJ;EACA;EACA;EACA;EACA;EACA;ERbE;ESCE;CnB2mEN;;AmBtmEI;EDLJ;ICMM;GnB0mEJ;CACF;;AkB5lEE;EACE;EACA;ClB+lEJ;;AkB3lEE;EACE;EACA;ClB8lEJ;;AoBpnEE;EACE;EACA;EACA;EACA;EAKE;CpBmnEN;;AkB/lEE;EACE;EAEA;ClBimEJ;;AkBpmEE;EACE;EAEA;ClBimEJ;;AkBpmEE;EACE;EAEA;ClBimEJ;;AkBpmEE;EACE;EAEA;ClBimEJ;;AkBpmEE;EACE;EAEA;ClBimEJ;;AkBzlEE;;EAEE;EAEA;ClB2lEJ;;AkBtlEE;EAME;EACA;ClBolEJ;;AkB/kEA;;EAEE;EACA;ClBklEF;;AkBxkEA;EACE;EACA;EACA;EdlBE;EcoBF;ClB2kEF;;AkBxkEA;EACE;EACA;Ed8BI;Ec5BJ;ClB2kEF;;AkBxkEA;EACE;EACA;EduBI;EcrBJ;ClB2kEF;;AkBlkEA;EACE;EACA;EACA;EACA;EdQI;EcNJ;EACA;EACA;EACA;EACA;ClBqkEF;;AkBnkEE;;EAEE;EACA;ClBskEJ;;AkB1jEA;EACE;EACA;EdjBI;EcmBJ;ER7IE;CV2sEJ;;AkB1jEA;EACE;EACA;EdzBI;Ec2BJ;ERrJE;CVmtEJ;;AkBxjEE;;EAEE;ClB2jEJ;;AkBvjEA;EACE;ClB0jEF;;AkBljEA;EACE;ClBqjEF;;AkBljEA;EACE;EACA;ClBqjEF;;AkB7iEA;EACE;EACA;EACA;EACA;ClBgjEF;;AkB9iEE;;EAEE;EACA;ClBijEJ;;AkBxiEA;EACE;EACA;EACA;ClB2iEF;;AkBxiEA;EACE;EACA;EACA;ClB2iEF;;AkBxiEE;;EAEE;ClB2iEJ;;AkBviEA;EACE;ClB0iEF;;AkBviEA;EACE;EACA;EACA;EACA;ClB0iEF;;AkBviEE;EACE;EACA;EACA;EACA;ClB0iEJ;;AoB9uEE;EACE;EACA;EACA;EhByBA;EgBvBA;CpBivEJ;;AoB9uEE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EhBoEE;EgBlEF;EACA;EACA;EV1DA;CV4yEJ;;AoB7uEI;;;;EAEE;CpBkvEN;;AoBxxEI;;EA4CE;EAGE;EACA;EACA;EACA;EACA;CpB+uER;;AoB5uEM;;EACE;EACA;CpBgvER;;AoBxyEI;;EAiEI;EACA;CpB4uER;;AoB9yEI;;EAyEE;EAGE;EACA;CpBwuER;;AoBruEM;;EACE;EACA;CpByuER;;AoBluEM;;EACE;CpBsuER;;AoBnuEM;;;;EAEE;CpBwuER;;AoBjuEM;;EACE;CpBquER;;AoBnuEQ;;EACE;CpBuuEV;;AoBluEQ;;EACE;EC1IN;CrBi3EJ;;AoBjuEQ;;EACE;CpBquEV;;AoBluEQ;;EACE;CpBsuEV;;AoB7tEM;;EACE;CpBiuER;;AoB7tEQ;;EACE;EACA;CpBiuEV;;AoBh2EE;EACE;EACA;EACA;EhByBA;EgBvBA;CpBm2EJ;;AoBh2EE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EhBoEE;EgBlEF;EACA;EACA;EV1DA;CV85EJ;;AoB/1EI;;;;EAEE;CpBo2EN;;AoB14EI;;EA4CE;EAGE;EACA;EACA;EACA;EACA;CpBi2ER;;AoB91EM;;EACE;EACA;CpBk2ER;;AoB15EI;;EAiEI;EACA;CpB81ER;;AoBh6EI;;EAyEE;EAGE;EACA;CpB01ER;;AoBv1EM;;EACE;EACA;CpB21ER;;AoBp1EM;;EACE;CpBw1ER;;AoBr1EM;;;;EAEE;CpB01ER;;AoBn1EM;;EACE;CpBu1ER;;AoBr1EQ;;EACE;CpBy1EV;;AoBp1EQ;;EACE;EC1IN;CrBm+EJ;;AoBn1EQ;;EACE;CpBu1EV;;AoBp1EQ;;EACE;CpBw1EV;;AoB/0EM;;EACE;CpBm1ER;;AoB/0EQ;;EACE;EACA;CpBm1EV;;AkBrvEA;EACE;EACA;EACA;ClBwvEF;;AkBnvEE;EACE;ClBsvEJ;;Ac58EI;EI2NA;IACE;IACA;IACA;IACA;GlBqvEJ;;EkBjvEE;IACE;IACA;IACA;IACA;IACA;GlBovEJ;;EkBhvEE;IACE;IACA;IACA;GlBmvEJ;;EkB/uEE;IACE;GlBkvEJ;;EkB/uEE;;IAEE;GlBkvEJ;;EkB7uEE;IACE;IACA;IACA;IACA;IACA;GlBgvEJ;;EkB9uEE;IACE;IACA;IACA;IACA;IACA;GlBivEJ;;EkB9uEE;IACE;IACA;GlBivEJ;;EkB/uEE;IACE;GlBkvEJ;CACF;;AsB3jFA;EACE;EAEA;EACA;EACA;EAEA;EACA;EACA;KAAA;MAAA;UAAA;EACA;EACA;ECuFA;EnBuBI;EmBrBJ;EbrGE;ESCE;CnB4kFN;;AmBvkFI;EGLJ;IHMM;GnB2kFJ;CACF;;AK5kFE;EiBUE;EACA;CtBskFJ;;AsBnkFE;;EAEE;EACA;CtBskFJ;;AsBlkFE;;EAEE;CtBqkFJ;;AsBtjFA;;EAEE;CtByjFF;;AsBhjFE;ECvDA;EFAE;EEEF;CvB2mFF;;AKvmFE;EkBAE;EFNA;EEQA;CvB2mFJ;;AuBxmFE;;EAEE;EFbA;EEeA;EAKE;CvBumFN;;AuBlmFE;;EAEE;EACA;EACA;CvBqmFJ;;AuB9lFE;;;EAGE;EACA;EAIA;CvB8lFJ;;AuB5lFI;;;EAKI;CvB6lFR;;AsBzlFE;ECvDA;EFAE;EEEF;CvBopFF;;AKhpFE;EkBAE;EFNA;EEQA;CvBopFJ;;AuBjpFE;;EAEE;EFbA;EEeA;EAKE;CvBgpFN;;AuB3oFE;;EAEE;EACA;EACA;CvB8oFJ;;AuBvoFE;;;EAGE;EACA;EAIA;CvBuoFJ;;AuBroFI;;;EAKI;CvBsoFR;;AsBloFE;ECvDA;EFAE;EEEF;CvB6rFF;;AKzrFE;EkBAE;EFNA;EEQA;CvB6rFJ;;AuB1rFE;;EAEE;EFbA;EEeA;EAKE;CvByrFN;;AuBprFE;;EAEE;EACA;EACA;CvBurFJ;;AuBhrFE;;;EAGE;EACA;EAIA;CvBgrFJ;;AuB9qFI;;;EAKI;CvB+qFR;;AsB3qFE;ECvDA;EFAE;EEEF;CvBsuFF;;AKluFE;EkBAE;EFNA;EEQA;CvBsuFJ;;AuBnuFE;;EAEE;EFbA;EEeA;EAKE;CvBkuFN;;AuB7tFE;;EAEE;EACA;EACA;CvBguFJ;;AuBztFE;;;EAGE;EACA;EAIA;CvBytFJ;;AuBvtFI;;;EAKI;CvBwtFR;;AsBptFE;ECvDA;EFAE;EEEF;CvB+wFF;;AK3wFE;EkBAE;EFNA;EEQA;CvB+wFJ;;AuB5wFE;;EAEE;EFbA;EEeA;EAKE;CvB2wFN;;AuBtwFE;;EAEE;EACA;EACA;CvBywFJ;;AuBlwFE;;;EAGE;EACA;EAIA;CvBkwFJ;;AuBhwFI;;;EAKI;CvBiwFR;;AsB7vFE;ECvDA;EFAE;EEEF;CvBwzFF;;AKpzFE;EkBAE;EFNA;EEQA;CvBwzFJ;;AuBrzFE;;EAEE;EFbA;EEeA;EAKE;CvBozFN;;AuB/yFE;;EAEE;EACA;EACA;CvBkzFJ;;AuB3yFE;;;EAGE;EACA;EAIA;CvB2yFJ;;AuBzyFI;;;EAKI;CvB0yFR;;AsBtyFE;ECvDA;EFAE;EEEF;CvBi2FF;;AK71FE;EkBAE;EFNA;EEQA;CvBi2FJ;;AuB91FE;;EAEE;EFbA;EEeA;EAKE;CvB61FN;;AuBx1FE;;EAEE;EACA;EACA;CvB21FJ;;AuBp1FE;;;EAGE;EACA;EAIA;CvBo1FJ;;AuBl1FI;;;EAKI;CvBm1FR;;AsB/0FE;ECvDA;EFAE;EEEF;CvB04FF;;AKt4FE;EkBAE;EFNA;EEQA;CvB04FJ;;AuBv4FE;;EAEE;EFbA;EEeA;EAKE;CvBs4FN;;AuBj4FE;;EAEE;EACA;EACA;CvBo4FJ;;AuB73FE;;;EAGE;EACA;EAIA;CvB63FJ;;AuB33FI;;;EAKI;CvB43FR;;AsBl3FE;ECHA;EACA;CvBy3FF;;AK96FE;EkBwDE;EACA;EACA;CvB03FJ;;AuBv3FE;;EAEE;CvB03FJ;;AuBv3FE;;EAEE;EACA;CvB03FJ;;AuBv3FE;;;EAGE;EACA;EACA;CvB03FJ;;AuBx3FI;;;EAKI;CvBy3FR;;AsBt5FE;ECHA;EACA;CvB65FF;;AKl9FE;EkBwDE;EACA;EACA;CvB85FJ;;AuB35FE;;EAEE;CvB85FJ;;AuB35FE;;EAEE;EACA;CvB85FJ;;AuB35FE;;;EAGE;EACA;EACA;CvB85FJ;;AuB55FI;;;EAKI;CvB65FR;;AsB17FE;ECHA;EACA;CvBi8FF;;AKt/FE;EkBwDE;EACA;EACA;CvBk8FJ;;AuB/7FE;;EAEE;CvBk8FJ;;AuB/7FE;;EAEE;EACA;CvBk8FJ;;AuB/7FE;;;EAGE;EACA;EACA;CvBk8FJ;;AuBh8FI;;;EAKI;CvBi8FR;;AsB99FE;ECHA;EACA;CvBq+FF;;AK1hGE;EkBwDE;EACA;EACA;CvBs+FJ;;AuBn+FE;;EAEE;CvBs+FJ;;AuBn+FE;;EAEE;EACA;CvBs+FJ;;AuBn+FE;;;EAGE;EACA;EACA;CvBs+FJ;;AuBp+FI;;;EAKI;CvBq+FR;;AsBlgGE;ECHA;EACA;CvBygGF;;AK9jGE;EkBwDE;EACA;EACA;CvB0gGJ;;AuBvgGE;;EAEE;CvB0gGJ;;AuBvgGE;;EAEE;EACA;CvB0gGJ;;AuBvgGE;;;EAGE;EACA;EACA;CvB0gGJ;;AuBxgGI;;;EAKI;CvBygGR;;AsBtiGE;ECHA;EACA;CvB6iGF;;AKlmGE;EkBwDE;EACA;EACA;CvB8iGJ;;AuB3iGE;;EAEE;CvB8iGJ;;AuB3iGE;;EAEE;EACA;CvB8iGJ;;AuB3iGE;;;EAGE;EACA;EACA;CvB8iGJ;;AuB5iGI;;;EAKI;CvB6iGR;;AsB1kGE;ECHA;EACA;CvBilGF;;AKtoGE;EkBwDE;EACA;EACA;CvBklGJ;;AuB/kGE;;EAEE;CvBklGJ;;AuB/kGE;;EAEE;EACA;CvBklGJ;;AuB/kGE;;;EAGE;EACA;EACA;CvBklGJ;;AuBhlGI;;;EAKI;CvBilGR;;AsB9mGE;ECHA;EACA;CvBqnGF;;AK1qGE;EkBwDE;EACA;EACA;CvBsnGJ;;AuBnnGE;;EAEE;CvBsnGJ;;AuBnnGE;;EAEE;EACA;CvBsnGJ;;AuBnnGE;;;EAGE;EACA;EACA;CvBsnGJ;;AuBpnGI;;;EAKI;CvBqnGR;;AsBvoGA;EACE;EACA;EACA;CtB0oGF;;AK/sGE;EiBwEE;EACA;CtB2oGJ;;AsBxoGE;;EAEE;EACA;CtB2oGJ;;AsBxoGE;;EAEE;EACA;CtB2oGJ;;AsBhoGA;;ECJE;EnBuBI;EmBrBJ;EbrGE;CV+uGJ;;AsBpoGA;;ECRE;EnBuBI;EmBrBJ;EbrGE;CVuvGJ;;AsBnoGA;EACE;EACA;CtBsoGF;;AsBnoGE;EACE;CtBsoGJ;;AsB9nGE;;;EACE;CtBmoGJ;;AwB3wGA;ELMM;CnBywGN;;AmBpwGI;EKXJ;ILYM;GnBwwGJ;CACF;;AwBlxGE;EACE;CxBqxGJ;;AwBhxGE;EACE;CxBmxGJ;;AwB/wGA;EACE;EACA;EACA;ELXI;CnB8xGN;;AmBzxGI;EKGJ;ILFM;GnB6xGJ;CACF;;AyBzyGA;;;;EAIE;CzB4yGF;;AyBzyGA;EACE;CzB4yGF;;A0BxxGI;EACE;EACA;EACA;EACA;EAhCJ;EACA;EACA;EACA;C1B4zGF;;A0BvwGI;EACE;C1B0wGN;;AyBpzGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ErBsGI;EqBpGJ;EACA;EACA;EACA;EACA;EACA;Ef3BE;CVm1GJ;;AyB/yGI;EACE;EACA;CzBkzGN;;AyB/yGI;EACE;EACA;CzBkzGN;;ActyGI;EWnBA;IACE;IACA;GzB6zGJ;;EyB1zGE;IACE;IACA;GzB6zGJ;CACF;;AclzGI;EWnBA;IACE;IACA;GzBy0GJ;;EyBt0GE;IACE;IACA;GzBy0GJ;CACF;;Ac9zGI;EWnBA;IACE;IACA;GzBq1GJ;;EyBl1GE;IACE;IACA;GzBq1GJ;CACF;;Ac10GI;EWnBA;IACE;IACA;GzBi2GJ;;EyB91GE;IACE;IACA;GzBi2GJ;CACF;;AyB11GE;EACE;EACA;EACA;EACA;CzB61GJ;;A0B53GI;EACE;EACA;EACA;EACA;EAzBJ;EACA;EACA;EACA;C1By5GF;;A0B32GI;EACE;C1B82GN;;AyBn2GE;EACE;EACA;EACA;EACA;EACA;CzBs2GJ;;A0Bn5GI;EACE;EACA;EACA;EACA;EAlBJ;EACA;EACA;EACA;C1By6GF;;A0Bl4GI;EACE;C1Bq4GN;;AyBh3GI;EACE;CzBm3GN;;AyB72GE;EACE;EACA;EACA;EACA;EACA;CzBg3GJ;;A0B96GI;EACE;EACA;EACA;EACA;C1Bi7GN;;A0Bt6GM;EACE;C1By6GR;;A0Bt6GM;EACE;EACA;EACA;EACA;EA9BN;EACA;EACA;C1Bw8GF;;A0Bv6GI;EACE;C1B06GN;;AyBp4GI;EACE;CzBu4GN;;AyB/3GE;;;;EAIE;EACA;CzBk4GJ;;AyB73GA;EE9GE;EACA;EACA;EACA;C3B++GF;;AyB73GA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CzBg4GF;;AKp/GE;;EoBmIE;EACA;EJ9IA;CrBqgHJ;;AyBn3GE;;EAEE;EACA;EJrJA;CrB4gHJ;;AyBn3GE;;EAEE;EACA;EACA;CzBs3GJ;;AyB92GA;EACE;CzBi3GF;;AyB72GA;EACE;EACA;EACA;ErBpDI;EqBsDJ;EACA;CzBg3GF;;AyB52GA;EACE;EACA;EACA;CzB+2GF;;A4BziHA;;EAEE;EACA;EACA;C5B4iHF;;A4B1iHE;;EACE;EACA;C5B8iHJ;;AK7iHE;;EuBII;C5B8iHN;;A4B5iHI;;;;;;EAGE;C5BkjHN;;A4B5iHA;EACE;EACA;EACA;C5B+iHF;;A4B7iHE;EACE;C5BgjHJ;;A4B1iHE;;EAEE;C5B6iHJ;;A4BziHE;;ElBxBE;EACA;CVskHJ;;A4B1iHE;;ElBfE;EACA;CV8jHJ;;A4B9hHA;EACE;EACA;C5BiiHF;;A4B/hHE;;;EAGE;C5BkiHJ;;A4B/hHE;EACE;C5BkiHJ;;A4B9hHA;;EACE;EACA;C5BkiHF;;A4B/hHA;;EACE;EACA;C5BmiHF;;A4B/gHA;EACE;EACA;EACA;C5BkhHF;;A4BhhHE;;EAEE;C5BmhHJ;;A4BhhHE;;EAEE;C5BmhHJ;;A4B/gHE;;ElBlGE;EACA;CVsnHJ;;A4BhhHE;;ElBrHE;EACA;CV0oHJ;;A4BlgHE;;EAEE;C5BqgHJ;;A4BngHI;;;;EAEE;EACA;EACA;C5BwgHN;;A6BjqHA;EACE;EACA;EACA;EACA;EACA;C7BoqHF;;A6BlqHE;;;;EAIE;EACA;EACA;EACA;C7BqqHJ;;A6BnqHI;;;;;;;;;;;;EAGE;C7B+qHN;;A6B1qHE;;;EAGE;C7B6qHJ;;A6BzqHE;EACE;C7B4qHJ;;A6BvqHI;;EnBtBA;EACA;CVksHJ;;A6B5qHI;;EnBTA;EACA;CV0rHJ;;A6B7qHE;EACE;EACA;C7BgrHJ;;A6B9qHI;;EnBhCA;EACA;CVmtHJ;;A6BlrHI;EnBpBA;EACA;CV0sHJ;;A6B5qHA;;EAEE;C7B+qHF;;A6B1qHE;;EACE;EACA;C7B8qHJ;;A6B5qHI;;EACE;C7BgrHN;;A6B5qHE;;;;;;;;EAIE;C7BmrHJ;;A6B/qHA;EAAuB;C7BmrHvB;;A6BlrHA;EAAsB;C7BsrHtB;;A6B9qHA;EACE;EACA;EACA;EACA;EzBwBI;EyBtBJ;EACA;EACA;EACA;EACA;EACA;EACA;EnB1GE;CV4xHJ;;A6B9qHE;;EAEE;C7BirHJ;;A6BvqHA;;EAEE;C7B0qHF;;A6BvqHA;;;;;;EAME;EzBXI;EyBaJ;EnBvIE;CVkzHJ;;A6BvqHA;;EAEE;C7B0qHF;;A6BvqHA;;;;;;EAME;EzB5BI;EyB8BJ;EnBxJE;CVm0HJ;;A6BvqHA;;EAEE;C7B0qHF;;A6B/pHA;;;;;;EnBzJI;EACA;CVi0HJ;;A6BhqHA;;;;;;EnBpJI;EACA;CV6zHJ;;A8Bx1HA;EACE;EACA;EACA;EACA;C9B21HF;;A8Bx1HA;EACE;EACA;C9B21HF;;A8Bx1HA;EACE;EACA;EACA;EACA;EACA;EACA;C9B21HF;;A8Bz1HE;EACE;EACA;ETzBA;CrBs3HJ;;A8Bx1HE;EAKI;C9Bu1HN;;A8Bn1HE;EACE;C9Bs1HJ;;A8Bn1HE;EACE;EACA;EACA;C9Bs1HJ;;A8B/0HI;;EACE;C9Bm1HN;;A8Bj1HM;;EACE;C9Bq1HR;;A8B30HA;EACE;EACA;EAEA;C9B60HF;;A8Bz0HE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C9B40HJ;;A8Bv0HE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C9B00HJ;;A8Bh0HE;EpB7GE;CVi7HJ;;A8B/zHI;EACE;C9Bk0HN;;A8B7zHI;EACE;ETxHF;CrBy7HJ;;A8B7zHI;EACE;C9Bg0HN;;A8B3zHI;EACE;C9B8zHN;;A8B5zHI;EACE;C9B+zHN;;A8BrzHE;EAEE;C9BuzHJ;;A8BnzHI;EACE;C9BszHN;;A8BjzHI;EACE;C9BozHN;;A8B1yHA;EACE;C9B6yHF;;A8B1yHI;EACE;EACA;EACA;EAEA;C9B4yHN;;A8BzyHI;EACE;EACA;EACA;EACA;EACA;EAEA;EX1LA;CnBs+HN;;AmBj+HI;EW8KA;IX7KE;GnBq+HJ;CACF;;A8B5yHI;EACE;EACA;C9B+yHN;;A8B1yHI;EACE;C9B6yHN;;A8BjyHA;EACE;EACA;EACA;EACA;E1B/FI;E0BkGJ;EACA;EACA;EACA;EACA;EACA;EpBjOE;EoBoOF;KAAA;UAAA;C9BkyHF;;A8BhyHE;EACE;EACA;EAIE;C9BgyHN;;A8B7xHI;EAME;EACA;C9B2xHN;;A8BvxHE;;EAEE;EACA;EACA;C9B0xHJ;;A8BvxHE;EACE;EACA;C9B0xHJ;;A8BtxHE;EACE;C9ByxHJ;;A8BrxHE;EACE;EACA;C9BwxHJ;;A8BpxHA;EACE;EACA;EACA;EACA;E1B5JI;CJo7HN;;A8BpxHA;EACE;EACA;EACA;EACA;E1BpKI;CJ47HN;;A8B/wHA;EACE;EACA;EACA;EACA;EACA;C9BkxHF;;A8B/wHA;EACE;EACA;EACA;EACA;EACA;EACA;C9BkxHF;;A8BhxHE;EACE;EACA;C9BmxHJ;;A8B/wHE;;EAEE;C9BkxHJ;;A8B9wHI;EACE;C9BixHN;;A8B7wHE;EACE;C9BgxHJ;;A8B5wHA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EpB1VE;CVymIJ;;A8B3wHE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ETxWA;ES0WA;EpB3WA;CV0nIJ;;A8BpwHA;EACE;EACA;EACA;EACA;EACA;KAAA;UAAA;C9BuwHF;;A8BrwHE;EACE;C9BwwHJ;;A8BpwHI;EAA0B;C9BwwH9B;;A8BvwHI;EAA0B;C9B2wH9B;;A8B1wHI;EAA0B;C9B8wH9B;;A8B3wHE;EACE;C9B8wHJ;;A8B3wHE;EACE;EACA;EACA;ET7YA;ES+YA;EpBhZA;ESCE;EWmZF;UAAA;C9B6wHJ;;AmB3pII;EWqYF;IXpYI;GnB+pIJ;CACF;;A8BjxHI;ETrZA;CrB0qIJ;;A8BhxHE;EACE;EACA;EACA;EACA;EACA;EACA;EpBjaA;CVqrIJ;;A8B/wHE;EACE;EACA;ETvaA;ESyaA;EpB1aA;ESCE;EW6aF;OAAA;C9BixHJ;;AmBzrII;EWgaF;IX/ZI;GnB6rIJ;CACF;;A8BrxHI;ET/aA;CrBwsIJ;;A8BpxHE;EACE;EACA;EACA;EACA;EACA;EACA;EpB3bA;CVmtIJ;;A8BnxHE;EACE;EACA;EACA;EACA;EACA;ETpcA;ESscA;EpBvcA;ESCE;EW0cF;C9BqxHJ;;AmB1tII;EW0bF;IXzbI;GnB8tIJ;CACF;;A8BzxHI;ET5cA;CrByuIJ;;A8BxxHE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C9B2xHJ;;A8BvxHE;EACE;EpB9dA;CVyvIJ;;A8BvxHE;EACE;EACA;EpBpeA;CV+vIJ;;A8BtxHI;EACE;C9ByxHN;;A8BtxHI;EACE;C9ByxHN;;A8BtxHI;EACE;C9ByxHN;;A8BtxHI;EACE;C9ByxHN;;A8BtxHI;EACE;C9ByxHN;;A8BpxHA;;;EX9fM;CnBwxIN;;AmBnxII;EWyfJ;;;IXxfM;GnByxIJ;CACF;;A+BjyIA;EACE;EACA;EACA;EACA;EACA;C/BoyIF;;A+BjyIA;EACE;EACA;C/BoyIF;;AKnyIE;;E0BEE;C/BsyIJ;;A+BlyIE;EACE;EACA;EACA;C/BqyIJ;;A+B7xIA;EACE;C/BgyIF;;A+B9xIE;EACE;C/BiyIJ;;A+B9xIE;EACE;ErB3BA;EACA;CV6zIJ;;AK5zIE;;E0B6BI;C/BoyIN;;A+BjyII;EACE;EACA;EACA;C/BoyIN;;A+BhyIE;;EAEE;EACA;EACA;C/BmyIJ;;A+BhyIE;EAEE;ErBlDA;EACA;CVq1IJ;;A+BxxIE;ErBvEE;CVm2IJ;;A+BxxIE;;EAEE;EACA;C/B2xIJ;;A+BjxIE;EACE;EACA;C/BoxIJ;;A+B/wIE;EACE;EACA;EACA;C/BkxIJ;;A+BxwIE;EACE;C/B2wIJ;;A+BzwIE;EACE;C/B4wIJ;;AgCh3IA;EACE;EACA;EACA;EACA;EACA;EACA;ChCm3IF;;AgC/2IE;;;;;;EACE;EACA;EACA;EACA;ChCu3IJ;;AgCn2IA;EACE;EACA;EACA;EACA;E5BwEI;E4BtEJ;EACA;ChCs2IF;;AKh5IE;;E2B6CE;ChCw2IJ;;AgC/1IA;EACE;EACA;EACA;EACA;EACA;ChCk2IF;;AgCh2IE;EACE;EACA;ChCm2IJ;;AgCh2IE;EACE;EACA;ChCm2IJ;;AgC11IA;EACE;EACA;EACA;ChC61IF;;AgCj1IA;EACE;EACA;EAGA;ChCk1IF;;AgC90IA;EACE;E5BSI;E4BPJ;EACA;EACA;EtBrHE;CVu8IJ;;AK57IE;;E2B8GE;ChCm1IJ;;AgC70IA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;ChCg1IF;;Acl5II;EkB8EI;;;;;;IACE;IACA;GhC60IR;CACF;;Ac36II;EkByFA;IAoBI;IACA;GhCm0IN;;EgCj0IM;IACE;GhCo0IR;;EgCl0IQ;IACE;GhCq0IV;;EgCl0IQ;IACE;IACA;GhCq0IV;;EgCh0IM;;;;;;IACE;GhCw0IR;;EgC1zIM;IACE;IAGA;GhC2zIR;;EgCxzIM;IACE;GhC2zIR;CACF;;Acp8II;EkB8EI;;;;;;IACE;IACA;GhC+3IR;CACF;;Ac79II;EkByFA;IAoBI;IACA;GhCq3IN;;EgCn3IM;IACE;GhCs3IR;;EgCp3IQ;IACE;GhCu3IV;;EgCp3IQ;IACE;IACA;GhCu3IV;;EgCl3IM;;;;;;IACE;GhC03IR;;EgC52IM;IACE;IAGA;GhC62IR;;EgC12IM;IACE;GhC62IR;CACF;;Act/II;EkB8EI;;;;;;IACE;IACA;GhCi7IR;CACF;;Ac/gJI;EkByFA;IAoBI;IACA;GhCu6IN;;EgCr6IM;IACE;GhCw6IR;;EgCt6IQ;IACE;GhCy6IV;;EgCt6IQ;IACE;IACA;GhCy6IV;;EgCp6IM;;;;;;IACE;GhC46IR;;EgC95IM;IACE;IAGA;GhC+5IR;;EgC55IM;IACE;GhC+5IR;CACF;;AcxiJI;EkB8EI;;;;;;IACE;IACA;GhCm+IR;CACF;;AcjkJI;EkByFA;IAoBI;IACA;GhCy9IN;;EgCv9IM;IACE;GhC09IR;;EgCx9IQ;IACE;GhC29IV;;EgCx9IQ;IACE;IACA;GhC29IV;;EgCt9IM;;;;;;IACE;GhC89IR;;EgCh9IM;IACE;IAGA;GhCi9IR;;EgC98IM;IACE;GhCi9IR;CACF;;AgC9gJI;EAoBI;EACA;ChC8/IR;;AgCjhJQ;;;;;;EACE;EACA;ChCyhJV;;AgCtgJQ;EACE;ChCygJV;;AgCvgJU;EACE;ChC0gJZ;;AgCvgJU;EACE;EACA;ChC0gJZ;;AgCrgJQ;;;;;;EACE;ChC6gJV;;AgC//IQ;EACE;EAGA;ChCggJV;;AgC7/IQ;EACE;ChCggJV;;AgCl/IE;EACE;ChCq/IJ;;AKrsJE;;E2BmNI;ChCu/IN;;AgCl/II;EACE;ChCq/IN;;AK9sJE;;E2B4NM;ChCu/IR;;AgCp/IM;EACE;ChCu/IR;;AgCn/II;;;;EAIE;ChCs/IN;;AgCl/IE;EACE;EACA;ChCq/IJ;;AgCl/IE;EACE;ChCq/IJ;;AgCl/IE;EACE;ChCq/IJ;;AgCp/II;EACE;ChCu/IN;;AK/uJE;;E2B2PM;ChCy/IR;;AgCj/IE;EACE;ChCo/IJ;;AKxvJE;;E2BuQI;ChCs/IN;;AgCj/II;EACE;ChCo/IN;;AKjwJE;;E2BgRM;ChCs/IR;;AgCn/IM;EACE;ChCs/IR;;AgCl/II;;;;EAIE;ChCq/IN;;AgCj/IE;EACE;EACA;ChCo/IJ;;AgCj/IE;EACE;ChCo/IJ;;AgCj/IE;EACE;ChCo/IJ;;AgCn/II;EACE;ChCs/IN;;AKlyJE;;E2B+SM;ChCw/IR;;AiCnzJA;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EvBRE;CV8zJJ;;AiCnzJE;EACE;EACA;CjCszJJ;;AiClzJI;EvBRA;EACA;CV8zJJ;;AiCjzJI;EvBAA;EACA;CVqzJJ;;AiChzJA;EAGE;EAGA;EACA;CjC+yJF;;AiC3yJA;EACE;CjC8yJF;;AiC3yJA;EACE;EACA;CjC8yJF;;AiC3yJA;EACE;CjC8yJF;;AKz1JE;E4BgDE;CjC6yJJ;;AiC1yJE;EACE;CjC6yJJ;;AiCryJA;EACE;EACA;EAEA;EACA;CjCuyJF;;AiCryJE;EvB1EE;CVm3JJ;;AiCpyJI;EACE;CjCuyJN;;AiClyJA;EACE;EACA;EACA;CjCqyJF;;AiCnyJE;EvB1FE;CVi4JJ;;AiC7xJA;EACE;EACA;EACA;EACA;CjCgyJF;;AiC7xJA;EACE;EACA;CjCgyJF;;AiC5xJA;EACE;EACA;EACA;EACA;EACA;EACA;CjC+xJF;;AiC5xJA;;;EAGE;EACA;CjC+xJF;;AiC5xJA;;EvBxHI;EACA;CVy5JJ;;AiC7xJA;;EvB/GI;EACA;CVi5JJ;;AiC1xJE;EACE;CjC6xJJ;;Act3JI;EmBuFJ;IAMI;IACA;IACA;IACA;GjC8xJF;;EiC5xJE;IAEE;IACA;IACA;IACA;GjC8xJJ;CACF;;AiClxJE;EACE;CjCqxJJ;;Ac14JI;EmBiHJ;IAQI;IACA;GjCsxJF;;EiCnxJE;IAEE;IACA;GjCqxJJ;;EiCnxJI;IACE;IACA;GjCsxJN;;EiCjxJM;IvBhLJ;IACA;GVq8JF;;EiCnxJQ;;IAGE;GjCqxJV;;EiCnxJQ;;IAGE;GjCqxJV;;EiCjxJM;IvBjLJ;IACA;GVs8JF;;EiCnxJQ;;IAGE;GjCqxJV;;EiCnxJQ;;IAGE;GjCqxJV;CACF;;AiCxwJE;EACE;CjC2wJJ;;Ac77JI;EmBgLJ;IAMI;SAAA;IACA;SAAA;IACA;IACA;GjC4wJF;;EiC1wJE;IACE;IACA;GjC6wJJ;CACF;;AiCnwJE;EACE;CjCswJJ;;AiCpwJI;EACE;EvB5OF;EACA;CVo/JJ;;AiCrwJI;EvB9PA;EACA;CVugKJ;;AiCtwJI;EvB3QA;EuB6QE;CjCywJN;;AkC3hKA;EACE;EACA;EACA;EACA;EAEA;EACA;ExBFE;CVgiKJ;;AkCxhKE;EACE;ClC2hKJ;;AkCzhKI;EACE;EACA;EACA;EACA;ClC4hKN;;AkClhKE;EACE;ClCqhKJ;;AkClhKE;EACE;ClCqhKJ;;AkClhKE;EACE;ClCqhKJ;;AmC5jKA;EACE;E5BGA;EACA;EGAE;CV8jKJ;;AmC7jKA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnCgkKF;;AmC9jKE;EACE;EACA;EACA;EACA;EACA;CnCikKJ;;AmC9jKE;EACE;EACA;EACA;CnCikKJ;;AmC3jKI;EACE;EzBCF;EACA;CV8jKJ;;AmC3jKI;EzBlBA;EACA;CVilKJ;;AmC3jKE;EACE;EACA;EACA;EACA;CnC8jKJ;;AmC3jKE;EACE;EACA;EAEA;EACA;EACA;CnC6jKJ;;AoCnnKE;EACE;EhC2HE;EgCzHF;CpCsnKJ;;AoCjnKM;E1BwBF;EACA;CV6lKJ;;AoCjnKM;E1BKF;EACA;CVgnKJ;;AoCnoKE;EACE;EhC2HE;EgCzHF;CpCsoKJ;;AoCjoKM;E1BwBF;EACA;CV6mKJ;;AoCjoKM;E1BKF;EACA;CVgoKJ;;AqCjpKA;EACE;EACA;EjCiEE;EiC/DF;EACA;EACA;EACA;EACA;E3BRE;ESCE;CnB6pKN;;AmBxpKI;EkBNJ;IlBOM;GnB4pKJ;CACF;;AKzpKE;;EgCGI;CrC2pKN;;AqCtpKE;EACE;CrCypKJ;;AqCppKA;EACE;EACA;CrCupKF;;AqChpKA;EACE;EACA;E3BpCE;CVwrKJ;;AqC3oKE;ECjDA;EACA;CtCgsKF;;AKlrKE;;EiCVI;EACA;CtCisKN;;AsC9rKI;;EAEE;EACA;CtCisKN;;AqC5pKE;ECjDA;EACA;CtCitKF;;AKnsKE;;EiCVI;EACA;CtCktKN;;AsC/sKI;;EAEE;EACA;CtCktKN;;AqC7qKE;ECjDA;EACA;CtCkuKF;;AKptKE;;EiCVI;EACA;CtCmuKN;;AsChuKI;;EAEE;EACA;CtCmuKN;;AqC9rKE;ECjDA;EACA;CtCmvKF;;AKruKE;;EiCVI;EACA;CtCovKN;;AsCjvKI;;EAEE;EACA;CtCovKN;;AqC/sKE;ECjDA;EACA;CtCowKF;;AKtvKE;;EiCVI;EACA;CtCqwKN;;AsClwKI;;EAEE;EACA;CtCqwKN;;AqChuKE;ECjDA;EACA;CtCqxKF;;AKvwKE;;EiCVI;EACA;CtCsxKN;;AsCnxKI;;EAEE;EACA;CtCsxKN;;AqCjvKE;ECjDA;EACA;CtCsyKF;;AKxxKE;;EiCVI;EACA;CtCuyKN;;AsCpyKI;;EAEE;EACA;CtCuyKN;;AqClwKE;ECjDA;EACA;CtCuzKF;;AKzyKE;;EiCVI;EACA;CtCwzKN;;AsCrzKI;;EAEE;EACA;CtCwzKN;;AuCr0KA;EACE;EACA;EAEA;E7BCE;CVu0KJ;;AchxKI;EyB5DJ;IAQI;GvCy0KF;CACF;;AuCt0KA;EACE;EACA;E7BTE;CVm1KJ;;AwCp1KA;EACE;EACA;EACA;EACA;E9BHE;CV21KJ;;AwCn1KA;EAEE;CxCq1KF;;AwCj1KA;EACE;CxCo1KF;;AwC50KA;EACE;CxC+0KF;;AwC50KE;EACE;EACA;EACA;EACA;EACA;CxC+0KJ;;AwCr0KE;EC9CA;EpBKE;EoBHF;CzCu3KF;;AyCr3KE;EACE;CzCw3KJ;;AyCr3KE;EACE;CzCw3KJ;;AwCn1KE;EC9CA;EpBKE;EoBHF;CzCq4KF;;AyCn4KE;EACE;CzCs4KJ;;AyCn4KE;EACE;CzCs4KJ;;AwCj2KE;EC9CA;EpBKE;EoBHF;CzCm5KF;;AyCj5KE;EACE;CzCo5KJ;;AyCj5KE;EACE;CzCo5KJ;;AwC/2KE;EC9CA;EpBKE;EoBHF;CzCi6KF;;AyC/5KE;EACE;CzCk6KJ;;AyC/5KE;EACE;CzCk6KJ;;AwC73KE;EC9CA;EpBKE;EoBHF;CzC+6KF;;AyC76KE;EACE;CzCg7KJ;;AyC76KE;EACE;CzCg7KJ;;AwC34KE;EC9CA;EpBKE;EoBHF;CzC67KF;;AyC37KE;EACE;CzC87KJ;;AyC37KE;EACE;CzC87KJ;;AwCz5KE;EC9CA;EpBKE;EoBHF;CzC28KF;;AyCz8KE;EACE;CzC48KJ;;AyCz8KE;EACE;CzC48KJ;;AwCv6KE;EC9CA;EpBKE;EoBHF;CzCy9KF;;AyCv9KE;EACE;CzC09KJ;;AyCv9KE;EACE;CzC09KJ;;A0Cl+KE;EACE;IAAO;G1Cs+KT;;E0Cr+KE;IAAK;G1Cy+KP;CACF;;A0C5+KE;EACE;IAAO;G1Cs+KT;;E0Cr+KE;IAAK;G1Cy+KP;CACF;;A0Ct+KA;EACE;EACA;EACA;EtCoHI;EsClHJ;EhCRE;CVk/KJ;;A0Cr+KA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EvBpBI;CnB6/KN;;AmBx/KI;EuBOJ;IvBNM;GnB4/KJ;CACF;;A0C3+KA;ErBaE;EqBXA;C1C8+KF;;A0C1+KE;EACE;UAAA;C1C6+KJ;;A0C1+KM;EAJJ;IAKM;YAAA;G1C8+KN;CACF;;A2CxhLA;EACE;EACA;C3C2hLF;;A2CxhLA;EACE;C3C2hLF;;A4C7hLA;EACE;EACA;EAGA;EACA;C5C8hLF;;A4CrhLA;EACE;EACA;EACA;C5CwhLF;;AK9hLE;;EuCUE;EACA;EACA;EACA;C5CyhLJ;;A4CthLE;EACE;EACA;C5CyhLJ;;A4ChhLA;EACE;EACA;EACA;EAEA;EACA;C5CkhLF;;A4ChhLE;ElCrCE;EACA;CVyjLJ;;A4CjhLE;ElC3BE;EACA;CVgjLJ;;A4ClhLE;;EAEE;EACA;EACA;C5CqhLJ;;A4CjhLE;EACE;EACA;EACA;EACA;C5CohLJ;;A4CjhLE;EACE;C5CohLJ;;A4ClhLI;EACE;EACA;C5CqhLN;;A4CvgLI;EACE;C5C0gLN;;A4CvgLQ;ElCrCJ;EAZA;CV6jLJ;;A4CvgLQ;ElCtDJ;EAYA;CVsjLJ;;A4CvgLQ;EACE;C5C0gLV;;A4CvgLQ;EACE;EACA;C5C0gLV;;A4CxgLU;EACE;EACA;C5C2gLZ;;AcpkLI;E8BiCA;IACE;G5CuiLJ;;E4CpiLM;IlCrCJ;IAZA;GV0lLF;;E4CpiLM;IlCtDJ;IAYA;GVmlLF;;E4CpiLM;IACE;G5CuiLR;;E4CpiLM;IACE;IACA;G5CuiLR;;E4CriLQ;IACE;IACA;G5CwiLV;CACF;;AclmLI;E8BiCA;IACE;G5CqkLJ;;E4ClkLM;IlCrCJ;IAZA;GVwnLF;;E4ClkLM;IlCtDJ;IAYA;GVinLF;;E4ClkLM;IACE;G5CqkLR;;E4ClkLM;IACE;IACA;G5CqkLR;;E4CnkLQ;IACE;IACA;G5CskLV;CACF;;AchoLI;E8BiCA;IACE;G5CmmLJ;;E4ChmLM;IlCrCJ;IAZA;GVspLF;;E4ChmLM;IlCtDJ;IAYA;GV+oLF;;E4ChmLM;IACE;G5CmmLR;;E4ChmLM;IACE;IACA;G5CmmLR;;E4CjmLQ;IACE;IACA;G5ComLV;CACF;;Ac9pLI;E8BiCA;IACE;G5CioLJ;;E4C9nLM;IlCrCJ;IAZA;GVorLF;;E4C9nLM;IlCtDJ;IAYA;GV6qLF;;E4C9nLM;IACE;G5CioLR;;E4C9nLM;IACE;IACA;G5CioLR;;E4C/nLQ;IACE;IACA;G5CkoLV;CACF;;A4CpnLE;EACE;EACA;ElCjIA;CVyvLJ;;A4CrnLI;EACE;C5CwnLN;;A4CnnLI;EACE;C5CsnLN;;A6CnwLE;EACE;EACA;C7CswLJ;;AK3vLE;;EwCPM;EACA;C7CuwLR;;A6CpwLM;EACE;EACA;EACA;C7CuwLR;;A6CpxLE;EACE;EACA;C7CuxLJ;;AK5wLE;;EwCPM;EACA;C7CwxLR;;A6CrxLM;EACE;EACA;EACA;C7CwxLR;;A6CryLE;EACE;EACA;C7CwyLJ;;AK7xLE;;EwCPM;EACA;C7CyyLR;;A6CtyLM;EACE;EACA;EACA;C7CyyLR;;A6CtzLE;EACE;EACA;C7CyzLJ;;AK9yLE;;EwCPM;EACA;C7C0zLR;;A6CvzLM;EACE;EACA;EACA;C7C0zLR;;A6Cv0LE;EACE;EACA;C7C00LJ;;AK/zLE;;EwCPM;EACA;C7C20LR;;A6Cx0LM;EACE;EACA;EACA;C7C20LR;;A6Cx1LE;EACE;EACA;C7C21LJ;;AKh1LE;;EwCPM;EACA;C7C41LR;;A6Cz1LM;EACE;EACA;EACA;C7C41LR;;A6Cz2LE;EACE;EACA;C7C42LJ;;AKj2LE;;EwCPM;EACA;C7C62LR;;A6C12LM;EACE;EACA;EACA;C7C62LR;;A6C13LE;EACE;EACA;C7C63LJ;;AKl3LE;;EwCPM;EACA;C7C83LR;;A6C33LM;EACE;EACA;EACA;C7C83LR;;A8C94LA;EACE;E1C8HI;E0C5HJ;EACA;EACA;EACA;EACA;C9Ci5LF;;AK54LE;EyCDE;EACA;C9Ci5LJ;;AK74LE;;EyCCI;C9Ci5LN;;A8Ct4LA;EACE;EACA;EACA;EACA;KAAA;UAAA;C9Cy4LF;;A8Cn4LA;EACE;C9Cs4LF;;A+C76LA;EACE;EACA;E3C6HI;E2C1HJ;EACA;EACA;EACA;EACA;UAAA;EACA;ErCLE;CVq7LJ;;A+C76LE;EACE;C/Cg7LJ;;A+C76LE;EACE;C/Cg7LJ;;A+C76LE;EACE;EACA;C/Cg7LJ;;A+C76LE;EACE;C/Cg7LJ;;A+C56LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C/C+6LF;;A+C56LA;EACE;C/C+6LF;;AgDn9LA;EAEE;ChDq9LF;;AgDn9LE;EACE;EACA;ChDs9LJ;;AgDj9LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;ChDk9LF;;AgD38LA;EACE;EACA;EACA;EAEA;ChD68LF;;AgD18LE;E7BrCI;E6BuCF;ChD68LJ;;AmB/+LI;E6BgCF;I7B/BI;GnBm/LJ;CACF;;AgDj9LE;EACE;ChDo9LJ;;AgDh9LE;EACE;ChDm9LJ;;AgD/8LA;EACE;EACA;ChDk9LF;;AgDh9LE;EACE;EACA;ChDm9LJ;;AgDh9LE;;EAEE;ChDm9LJ;;AgDh9LE;EACE;ChDm9LJ;;AgD/8LA;EACE;EACA;EACA;ChDk9LF;;AgD/8LE;EACE;EACA;EACA;ChDk9LJ;;AgD98LE;EACE;EACA;EACA;ChDi9LJ;;AgD/8LI;EACE;ChDk9LN;;AgD/8LI;EACE;ChDk9LN;;AgD58LA;EACE;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EtC9GE;EsCkHF;ChD28LF;;AgDv8LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;ChD08LF;;AgDv8LE;EAAS;ChD28LX;;AgD18LE;EAAS;ChD88LX;;AgDz8LA;EACE;EACA;EACA;EACA;EACA;EtClIE;EACA;CV+kMJ;;AgD38LE;EACE;EAEA;ChD68LJ;;AgDx8LA;EACE;EACA;ChD28LF;;AgDt8LA;EACE;EAGA;EACA;ChDu8LF;;AgDn8LA;EACE;EACA;EACA;EACA;EACA;EACA;EtCrJE;EACA;CV4lMJ;;AgDj8LE;EACE;ChDo8LJ;;AgD/7LA;EACE;EACA;EACA;EACA;EACA;ChDk8LF;;AczkMI;EkC6IF;IACE;IACA;GhDg8LF;;EgD77LA;IACE;GhDg8LF;;EgD97LE;IACE;GhDi8LJ;;EgD77LA;IACE;GhDg8LF;;EgD97LE;IACE;GhDi8LJ;;EgDz7LA;IAAY;GhD67LZ;CACF;;AcpmMI;EkC0KF;;IAEE;GhD87LF;CACF;;Ac3mMI;EkCiLF;IAAY;GhD+7LZ;CACF;;AiD5qMA;EACE;EACA;EACA;EACA;ECJA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E9CgHI;E6CpHJ;EACA;CjDyrMF;;AiDvrME;EAAS;CjD2rMX;;AiDzrME;EACE;EACA;EACA;EACA;CjD4rMJ;;AiD1rMI;EACE;EACA;EACA;EACA;CjD6rMN;;AiDxrMA;;EACE;CjD4rMF;;AiD1rME;;EACE;CjD8rMJ;;AiD5rMI;;EACE;EACA;EACA;CjDgsMN;;AiD3rMA;;EACE;CjD+rMF;;AiD7rME;;EACE;EACA;EACA;CjDisMJ;;AiD/rMI;;EACE;EACA;EACA;CjDmsMN;;AiD9rMA;;EACE;CjDksMF;;AiDhsME;;EACE;CjDosMJ;;AiDlsMI;;EACE;EACA;EACA;CjDssMN;;AiDjsMA;;EACE;CjDqsMF;;AiDnsME;;EACE;EACA;EACA;CjDusMJ;;AiDrsMI;;EACE;EACA;EACA;CjDysMN;;AiDprMA;EACE;EACA;EACA;EACA;EACA;EvC3GE;CVmyMJ;;AmDxyMA;EACE;EACA;EACA;EACA;EACA;EACA;EDLA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E9CgHI;E+CnHJ;EACA;EACA;EACA;EzCVE;CVg0MJ;;AmDlzME;EACE;EACA;EACA;EACA;EACA;CnDqzMJ;;AmDnzMI;;EAEE;EACA;EACA;EACA;EACA;CnDszMN;;AmDjzMA;;EACE;CnDqzMF;;AmDnzME;;EACE;CnDuzMJ;;AmDrzMI;;EACE;EACA;EACA;CnDyzMN;;AmDtzMI;;EACE;EACA;EACA;CnD0zMN;;AmDrzMA;;EACE;CnDyzMF;;AmDvzME;;EACE;EACA;EACA;EACA;CnD2zMJ;;AmDzzMI;;EACE;EACA;EACA;CnD6zMN;;AmD1zMI;;EACE;EACA;EACA;CnD8zMN;;AmDzzMA;;EACE;CnD6zMF;;AmD3zME;;EACE;CnD+zMJ;;AmD7zMI;;EACE;EACA;EACA;CnDi0MN;;AmD9zMI;;EACE;EACA;EACA;CnDk0MN;;AmD7zME;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnDi0MJ;;AmD7zMA;;EACE;CnDi0MF;;AmD/zME;;EACE;EACA;EACA;EACA;CnDm0MJ;;AmDj0MI;;EACE;EACA;EACA;CnDq0MN;;AmDl0MI;;EACE;EACA;EACA;CnDs0MN;;AmDhzMA;EACE;EACA;E/C3BI;E+C8BJ;EACA;EzChJE;EACA;CVm8MJ;;AmDjzME;EACE;CnDozMJ;;AmDhzMA;EACE;EACA;CnDmzMF;;AoD98MA;EACE;CpDi9MF;;AoD98MA;EACE;CpDi9MF;;AoD98MA;EACE;EACA;EACA;CpDi9MF;;AqDx+ME;EACE;EACA;EACA;CrD2+MJ;;AoDn9MA;EACE;EACA;EACA;EACA;EACA;EACA;UAAA;EjC5BI;CnBm/MN;;AmB9+MI;EiCiBJ;IjChBM;GnBk/MJ;CACF;;AoDz9MA;;;EAGE;CpD49MF;;AoDz9MA;;EAEE;CpD49MF;;AoDz9MA;;EAEE;CpD49MF;;AoDn9ME;EACE;EACA;EACA;CpDs9MJ;;AoDn9ME;;;EAGE;EACA;CpDs9MJ;;AoDn9ME;;EAEE;EACA;EjCtEE;CnB6hNN;;AmBxhNI;EiC8DF;;IjC7DI;GnB6hNJ;CACF;;AoDp9MA;;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EjC7FI;CnBojNN;;AmB/iNI;EiC2EJ;;IjC1EM;GnBojNJ;CACF;;AKjjNE;;;;E+CwFE;EACA;EACA;EACA;CpDg+MJ;;AoD79MA;EACE;CpDg+MF;;AoD39MA;EACE;CpD89MF;;AoDv9MA;;EAEE;EACA;EACA;EACA;CpD09MF;;AoDx9MA;EACE;CpD29MF;;AoDz9MA;EACE;CpD49MF;;AoDn9MA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;CpDq9MF;;AoDn9ME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EjCtKE;CnB4nNN;;AmBvnNI;EiCmJF;IjClJI;GnB2nNJ;CACF;;AoDx9ME;EACE;CpD29MJ;;AoDl9MA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CpDq9MF;;AsDppNA;EACE;IAAK;GtDwpNL;CACF;;AsD1pNA;EACE;IAAK;GtDwpNL;CACF;;AsDtpNA;EACE;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;UAAA;CtDwpNF;;AsDrpNA;EACE;EACA;EACA;CtDwpNF;;AsDjpNA;EACE;IACE;GtDopNF;;EsDlpNA;IACE;GtDqpNF;CACF;;AsD3pNA;EACE;IACE;GtDopNF;;EsDlpNA;IACE;GtDqpNF;CACF;;AsDlpNA;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;UAAA;CtDopNF;;AsDjpNA;EACE;EACA;CtDopNF;;AuDvsNA;EAAqB;CvD2sNrB;;AuD1sNA;EAAqB;CvD8sNrB;;AuD7sNA;EAAqB;CvDitNrB;;AuDhtNA;EAAqB;CvDotNrB;;AuDntNA;EAAqB;CvDutNrB;;AuDttNA;EAAqB;CvD0tNrB;;AwD5tNE;EACE;CxD+tNJ;;AKrtNE;;;;EmDLI;CxDiuNN;;AwDvuNE;EACE;CxD0uNJ;;AKhuNE;;;;EmDLI;CxD4uNN;;AwDlvNE;EACE;CxDqvNJ;;AK3uNE;;;;EmDLI;CxDuvNN;;AwD7vNE;EACE;CxDgwNJ;;AKtvNE;;;;EmDLI;CxDkwNN;;AwDxwNE;EACE;CxD2wNJ;;AKjwNE;;;;EmDLI;CxD6wNN;;AwDnxNE;EACE;CxDsxNJ;;AK5wNE;;;;EmDLI;CxDwxNN;;AwD9xNE;EACE;CxDiyNJ;;AKvxNE;;;;EmDLI;CxDmyNN;;AwDzyNE;EACE;CxD4yNJ;;AKlyNE;;;;EmDLI;CxD8yNN;;AyD7yNA;EACE;CzDgzNF;;AyD7yNA;EACE;CzDgzNF;;A0D3zNA;EAAkB;C1D+zNlB;;A0D9zNA;EAAkB;C1Dk0NlB;;A0Dj0NA;EAAkB;C1Dq0NlB;;A0Dp0NA;EAAkB;C1Dw0NlB;;A0Dv0NA;EAAkB;C1D20NlB;;A0Dz0NA;EAAmB;C1D60NnB;;A0D50NA;EAAmB;C1Dg1NnB;;A0D/0NA;EAAmB;C1Dm1NnB;;A0Dl1NA;EAAmB;C1Ds1NnB;;A0Dr1NA;EAAmB;C1Dy1NnB;;A0Dt1NE;EACE;C1Dy1NJ;;A0D11NE;EACE;C1D61NJ;;A0D91NE;EACE;C1Di2NJ;;A0Dl2NE;EACE;C1Dq2NJ;;A0Dt2NE;EACE;C1Dy2NJ;;A0D12NE;EACE;C1D62NJ;;A0D92NE;EACE;C1Di3NJ;;A0Dl3NE;EACE;C1Dq3NJ;;A0Dj3NA;EACE;C1Do3NF;;A0D72NA;EACE;C1Dg3NF;;A0D72NA;EACE;C1Dg3NF;;A0D72NA;EACE;EACA;C1Dg3NF;;A0D72NA;EACE;EACA;C1Dg3NF;;A0D72NA;EACE;EACA;C1Dg3NF;;A0D72NA;EACE;EACA;C1Dg3NF;;A0D72NA;EACE;C1Dg3NF;;A0D72NA;EACE;C1Dg3NF;;A0D72NA;EACE;C1Dg3NF;;A0D72NA;EACE;C1Dg3NF;;AqDx7NE;EACE;EACA;EACA;CrD27NJ;;A2Dp7NM;EAAwB;C3Dw7N9B;;A2Dx7NM;EAAwB;C3D47N9B;;A2D57NM;EAAwB;C3Dg8N9B;;A2Dh8NM;EAAwB;C3Do8N9B;;A2Dp8NM;EAAwB;C3Dw8N9B;;A2Dx8NM;EAAwB;C3D48N9B;;A2D58NM;EAAwB;C3Dg9N9B;;A2Dh9NM;EAAwB;C3Do9N9B;;A2Dp9NM;EAAwB;C3Dw9N9B;;Acv6NI;E6CjDE;IAAwB;G3D69N5B;;E2D79NI;IAAwB;G3Di+N5B;;E2Dj+NI;IAAwB;G3Dq+N5B;;E2Dr+NI;IAAwB;G3Dy+N5B;;E2Dz+NI;IAAwB;G3D6+N5B;;E2D7+NI;IAAwB;G3Di/N5B;;E2Dj/NI;IAAwB;G3Dq/N5B;;E2Dr/NI;IAAwB;G3Dy/N5B;;E2Dz/NI;IAAwB;G3D6/N5B;CACF;;Ac78NI;E6CjDE;IAAwB;G3DmgO5B;;E2DngOI;IAAwB;G3DugO5B;;E2DvgOI;IAAwB;G3D2gO5B;;E2D3gOI;IAAwB;G3D+gO5B;;E2D/gOI;IAAwB;G3DmhO5B;;E2DnhOI;IAAwB;G3DuhO5B;;E2DvhOI;IAAwB;G3D2hO5B;;E2D3hOI;IAAwB;G3D+hO5B;;E2D/hOI;IAAwB;G3DmiO5B;CACF;;Acn/NI;E6CjDE;IAAwB;G3DyiO5B;;E2DziOI;IAAwB;G3D6iO5B;;E2D7iOI;IAAwB;G3DijO5B;;E2DjjOI;IAAwB;G3DqjO5B;;E2DrjOI;IAAwB;G3DyjO5B;;E2DzjOI;IAAwB;G3D6jO5B;;E2D7jOI;IAAwB;G3DikO5B;;E2DjkOI;IAAwB;G3DqkO5B;;E2DrkOI;IAAwB;G3DykO5B;CACF;;AczhOI;E6CjDE;IAAwB;G3D+kO5B;;E2D/kOI;IAAwB;G3DmlO5B;;E2DnlOI;IAAwB;G3DulO5B;;E2DvlOI;IAAwB;G3D2lO5B;;E2D3lOI;IAAwB;G3D+lO5B;;E2D/lOI;IAAwB;G3DmmO5B;;E2DnmOI;IAAwB;G3DumO5B;;E2DvmOI;IAAwB;G3D2mO5B;;E2D3mOI;IAAwB;G3D+mO5B;CACF;;A2DtmOA;EAEI;IAAqB;G3DymOvB;;E2DzmOE;IAAqB;G3D6mOvB;;E2D7mOE;IAAqB;G3DinOvB;;E2DjnOE;IAAqB;G3DqnOvB;;E2DrnOE;IAAqB;G3DynOvB;;E2DznOE;IAAqB;G3D6nOvB;;E2D7nOE;IAAqB;G3DioOvB;;E2DjoOE;IAAqB;G3DqoOvB;;E2DroOE;IAAqB;G3DyoOvB;CACF;;A4D/pOA;EACE;EACA;EACA;EACA;EACA;C5DkqOF;;A4DhqOE;EACE;EACA;C5DmqOJ;;A4DhqOE;;;;;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;C5DmqOJ;;A4D1pOI;EACE;C5D6pON;;A4D9pOI;EACE;C5DiqON;;A4DlqOI;EACE;C5DqqON;;A4DtqOI;EACE;C5DyqON;;A4D1qOI;EACE;C5D6qON;;A4D9qOI;EACE;C5DirON;;A4DlrOI;EACE;C5DqrON;;A4DtrOI;EACE;C5DyrON;;A6DltOI;EAAgC;C7DstOpC;;A6DrtOI;EAAgC;C7DytOpC;;A6DxtOI;EAAgC;C7D4tOpC;;A6D3tOI;EAAgC;C7D+tOpC;;A6D7tOI;EAA8B;C7DiuOlC;;A6DhuOI;EAA8B;C7DouOlC;;A6DnuOI;EAA8B;C7DuuOlC;;A6DtuOI;EAA8B;C7D0uOlC;;A6DzuOI;EAA8B;C7D6uOlC;;A6D5uOI;EAA8B;C7DgvOlC;;A6D/uOI;EAA8B;C7DmvOlC;;A6DlvOI;EAA8B;C7DsvOlC;;A6DpvOI;EAAoC;C7DwvOxC;;A6DvvOI;EAAoC;C7D2vOxC;;A6D1vOI;EAAoC;C7D8vOxC;;A6D7vOI;EAAoC;C7DiwOxC;;A6DhwOI;EAAoC;C7DowOxC;;A6DlwOI;EAAiC;C7DswOrC;;A6DrwOI;EAAiC;C7DywOrC;;A6DxwOI;EAAiC;C7D4wOrC;;A6D3wOI;EAAiC;C7D+wOrC;;A6D9wOI;EAAiC;C7DkxOrC;;A6DhxOI;EAAkC;C7DoxOtC;;A6DnxOI;EAAkC;C7DuxOtC;;A6DtxOI;EAAkC;C7D0xOtC;;A6DzxOI;EAAkC;C7D6xOtC;;A6D5xOI;EAAkC;C7DgyOtC;;A6D/xOI;EAAkC;C7DmyOtC;;A6DjyOI;EAAgC;C7DqyOpC;;A6DpyOI;EAAgC;C7DwyOpC;;A6DvyOI;EAAgC;C7D2yOpC;;A6D1yOI;EAAgC;C7D8yOpC;;A6D7yOI;EAAgC;C7DizOpC;;A6DhzOI;EAAgC;C7DozOpC;;AcxyOI;E+ClDA;IAAgC;G7D+1OlC;;E6D91OE;IAAgC;G7Dk2OlC;;E6Dj2OE;IAAgC;G7Dq2OlC;;E6Dp2OE;IAAgC;G7Dw2OlC;;E6Dt2OE;IAA8B;G7D02OhC;;E6Dz2OE;IAA8B;G7D62OhC;;E6D52OE;IAA8B;G7Dg3OhC;;E6D/2OE;IAA8B;G7Dm3OhC;;E6Dl3OE;IAA8B;G7Ds3OhC;;E6Dr3OE;IAA8B;G7Dy3OhC;;E6Dx3OE;IAA8B;G7D43OhC;;E6D33OE;IAA8B;G7D+3OhC;;E6D73OE;IAAoC;G7Di4OtC;;E6Dh4OE;IAAoC;G7Do4OtC;;E6Dn4OE;IAAoC;G7Du4OtC;;E6Dt4OE;IAAoC;G7D04OtC;;E6Dz4OE;IAAoC;G7D64OtC;;E6D34OE;IAAiC;G7D+4OnC;;E6D94OE;IAAiC;G7Dk5OnC;;E6Dj5OE;IAAiC;G7Dq5OnC;;E6Dp5OE;IAAiC;G7Dw5OnC;;E6Dv5OE;IAAiC;G7D25OnC;;E6Dz5OE;IAAkC;G7D65OpC;;E6D55OE;IAAkC;G7Dg6OpC;;E6D/5OE;IAAkC;G7Dm6OpC;;E6Dl6OE;IAAkC;G7Ds6OpC;;E6Dr6OE;IAAkC;G7Dy6OpC;;E6Dx6OE;IAAkC;G7D46OpC;;E6D16OE;IAAgC;G7D86OlC;;E6D76OE;IAAgC;G7Di7OlC;;E6Dh7OE;IAAgC;G7Do7OlC;;E6Dn7OE;IAAgC;G7Du7OlC;;E6Dt7OE;IAAgC;G7D07OlC;;E6Dz7OE;IAAgC;G7D67OlC;CACF;;Acl7OI;E+ClDA;IAAgC;G7Dy+OlC;;E6Dx+OE;IAAgC;G7D4+OlC;;E6D3+OE;IAAgC;G7D++OlC;;E6D9+OE;IAAgC;G7Dk/OlC;;E6Dh/OE;IAA8B;G7Do/OhC;;E6Dn/OE;IAA8B;G7Du/OhC;;E6Dt/OE;IAA8B;G7D0/OhC;;E6Dz/OE;IAA8B;G7D6/OhC;;E6D5/OE;IAA8B;G7DggPhC;;E6D//OE;IAA8B;G7DmgPhC;;E6DlgPE;IAA8B;G7DsgPhC;;E6DrgPE;IAA8B;G7DygPhC;;E6DvgPE;IAAoC;G7D2gPtC;;E6D1gPE;IAAoC;G7D8gPtC;;E6D7gPE;IAAoC;G7DihPtC;;E6DhhPE;IAAoC;G7DohPtC;;E6DnhPE;IAAoC;G7DuhPtC;;E6DrhPE;IAAiC;G7DyhPnC;;E6DxhPE;IAAiC;G7D4hPnC;;E6D3hPE;IAAiC;G7D+hPnC;;E6D9hPE;IAAiC;G7DkiPnC;;E6DjiPE;IAAiC;G7DqiPnC;;E6DniPE;IAAkC;G7DuiPpC;;E6DtiPE;IAAkC;G7D0iPpC;;E6DziPE;IAAkC;G7D6iPpC;;E6D5iPE;IAAkC;G7DgjPpC;;E6D/iPE;IAAkC;G7DmjPpC;;E6DljPE;IAAkC;G7DsjPpC;;E6DpjPE;IAAgC;G7DwjPlC;;E6DvjPE;IAAgC;G7D2jPlC;;E6D1jPE;IAAgC;G7D8jPlC;;E6D7jPE;IAAgC;G7DikPlC;;E6DhkPE;IAAgC;G7DokPlC;;E6DnkPE;IAAgC;G7DukPlC;CACF;;Ac5jPI;E+ClDA;IAAgC;G7DmnPlC;;E6DlnPE;IAAgC;G7DsnPlC;;E6DrnPE;IAAgC;G7DynPlC;;E6DxnPE;IAAgC;G7D4nPlC;;E6D1nPE;IAA8B;G7D8nPhC;;E6D7nPE;IAA8B;G7DioPhC;;E6DhoPE;IAA8B;G7DooPhC;;E6DnoPE;IAA8B;G7DuoPhC;;E6DtoPE;IAA8B;G7D0oPhC;;E6DzoPE;IAA8B;G7D6oPhC;;E6D5oPE;IAA8B;G7DgpPhC;;E6D/oPE;IAA8B;G7DmpPhC;;E6DjpPE;IAAoC;G7DqpPtC;;E6DppPE;IAAoC;G7DwpPtC;;E6DvpPE;IAAoC;G7D2pPtC;;E6D1pPE;IAAoC;G7D8pPtC;;E6D7pPE;IAAoC;G7DiqPtC;;E6D/pPE;IAAiC;G7DmqPnC;;E6DlqPE;IAAiC;G7DsqPnC;;E6DrqPE;IAAiC;G7DyqPnC;;E6DxqPE;IAAiC;G7D4qPnC;;E6D3qPE;IAAiC;G7D+qPnC;;E6D7qPE;IAAkC;G7DirPpC;;E6DhrPE;IAAkC;G7DorPpC;;E6DnrPE;IAAkC;G7DurPpC;;E6DtrPE;IAAkC;G7D0rPpC;;E6DzrPE;IAAkC;G7D6rPpC;;E6D5rPE;IAAkC;G7DgsPpC;;E6D9rPE;IAAgC;G7DksPlC;;E6DjsPE;IAAgC;G7DqsPlC;;E6DpsPE;IAAgC;G7DwsPlC;;E6DvsPE;IAAgC;G7D2sPlC;;E6D1sPE;IAAgC;G7D8sPlC;;E6D7sPE;IAAgC;G7DitPlC;CACF;;ActsPI;E+ClDA;IAAgC;G7D6vPlC;;E6D5vPE;IAAgC;G7DgwPlC;;E6D/vPE;IAAgC;G7DmwPlC;;E6DlwPE;IAAgC;G7DswPlC;;E6DpwPE;IAA8B;G7DwwPhC;;E6DvwPE;IAA8B;G7D2wPhC;;E6D1wPE;IAA8B;G7D8wPhC;;E6D7wPE;IAA8B;G7DixPhC;;E6DhxPE;IAA8B;G7DoxPhC;;E6DnxPE;IAA8B;G7DuxPhC;;E6DtxPE;IAA8B;G7D0xPhC;;E6DzxPE;IAA8B;G7D6xPhC;;E6D3xPE;IAAoC;G7D+xPtC;;E6D9xPE;IAAoC;G7DkyPtC;;E6DjyPE;IAAoC;G7DqyPtC;;E6DpyPE;IAAoC;G7DwyPtC;;E6DvyPE;IAAoC;G7D2yPtC;;E6DzyPE;IAAiC;G7D6yPnC;;E6D5yPE;IAAiC;G7DgzPnC;;E6D/yPE;IAAiC;G7DmzPnC;;E6DlzPE;IAAiC;G7DszPnC;;E6DrzPE;IAAiC;G7DyzPnC;;E6DvzPE;IAAkC;G7D2zPpC;;E6D1zPE;IAAkC;G7D8zPpC;;E6D7zPE;IAAkC;G7Di0PpC;;E6Dh0PE;IAAkC;G7Do0PpC;;E6Dn0PE;IAAkC;G7Du0PpC;;E6Dt0PE;IAAkC;G7D00PpC;;E6Dx0PE;IAAgC;G7D40PlC;;E6D30PE;IAAgC;G7D+0PlC;;E6D90PE;IAAgC;G7Dk1PlC;;E6Dj1PE;IAAgC;G7Dq1PlC;;E6Dp1PE;IAAgC;G7Dw1PlC;;E6Dv1PE;IAAgC;G7D21PlC;CACF;;A8Dt4PI;EAAwB;C9D04P5B;;A8Dz4PI;EAAwB;C9D64P5B;;A8D54PI;EAAwB;C9Dg5P5B;;Ac51PI;EgDtDA;IAAwB;G9Du5P1B;;E8Dt5PE;IAAwB;G9D05P1B;;E8Dz5PE;IAAwB;G9D65P1B;CACF;;Ac12PI;EgDtDA;IAAwB;G9Dq6P1B;;E8Dp6PE;IAAwB;G9Dw6P1B;;E8Dv6PE;IAAwB;G9D26P1B;CACF;;Acx3PI;EgDtDA;IAAwB;G9Dm7P1B;;E8Dl7PE;IAAwB;G9Ds7P1B;;E8Dr7PE;IAAwB;G9Dy7P1B;CACF;;Act4PI;EgDtDA;IAAwB;G9Di8P1B;;E8Dh8PE;IAAwB;G9Do8P1B;;E8Dn8PE;IAAwB;G9Du8P1B;CACF;;A+D78PE;EAAsB;C/Di9PxB;;A+Dj9PE;EAAsB;C/Dq9PxB;;AgEp9PE;EAAyB;ChEw9P3B;;AgEx9PE;EAAyB;ChE49P3B;;AgE59PE;EAAyB;ChEg+P3B;;AgEh+PE;EAAyB;ChEo+P3B;;AgEp+PE;EAAyB;EAAA;ChEw+P3B;;AgEn+PA;EACE;EACA;EACA;EACA;EACA;ChEs+PF;;AgEn+PA;EACE;EACA;EACA;EACA;EACA;ChEs+PF;;AgEl+PE;EADF;IAEI;IAAA;IACA;IACA;GhEs+PF;CACF;;AiEhgQA;ECEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClEkgQF;;AkEx/PE;;EAEE;EACA;EACA;EACA;EACA;EACA;ClE2/PJ;;AmExhQA;EAAa;CnE4hQb;;AmE3hQA;EAAU;CnE+hQV;;AmE9hQA;EAAa;CnEkiQb;;AmEjiQA;EAAe;CnEqiQf;;AoEpiQI;EAAuB;CpEwiQ3B;;AoExiQI;EAAuB;CpE4iQ3B;;AoE5iQI;EAAuB;CpEgjQ3B;;AoEhjQI;EAAuB;CpEojQ3B;;AoEpjQI;EAAuB;CpEwjQ3B;;AoExjQI;EAAuB;CpE4jQ3B;;AoE5jQI;EAAuB;CpEgkQ3B;;AoEhkQI;EAAuB;CpEokQ3B;;AoEpkQI;EAAuB;CpEwkQ3B;;AoExkQI;EAAuB;CpE4kQ3B;;AoExkQA;EAAU;CpE4kQV;;AoE3kQA;EAAU;CpE+kQV;;AoE3kQA;EAAc;CpE+kQd;;AoE9kQA;EAAc;CpEklQd;;AoEhlQA;EAAU;CpEolQV;;AoEnlQA;EAAU;CpEulQV;;AqErmQE;EACE;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;CrEsmQJ;;AsE5mQQ;EAAgC;CtEgnQxC;;AsE/mQQ;;EAEE;CtEknQV;;AsEhnQQ;;EAEE;CtEmnQV;;AsEjnQQ;;EAEE;CtEonQV;;AsElnQQ;;EAEE;CtEqnQV;;AsEpoQQ;EAAgC;CtEwoQxC;;AsEvoQQ;;EAEE;CtE0oQV;;AsExoQQ;;EAEE;CtE2oQV;;AsEzoQQ;;EAEE;CtE4oQV;;AsE1oQQ;;EAEE;CtE6oQV;;AsE5pQQ;EAAgC;CtEgqQxC;;AsE/pQQ;;EAEE;CtEkqQV;;AsEhqQQ;;EAEE;CtEmqQV;;AsEjqQQ;;EAEE;CtEoqQV;;AsElqQQ;;EAEE;CtEqqQV;;AsEprQQ;EAAgC;CtEwrQxC;;AsEvrQQ;;EAEE;CtE0rQV;;AsExrQQ;;EAEE;CtE2rQV;;AsEzrQQ;;EAEE;CtE4rQV;;AsE1rQQ;;EAEE;CtE6rQV;;AsE5sQQ;EAAgC;CtEgtQxC;;AsE/sQQ;;EAEE;CtEktQV;;AsEhtQQ;;EAEE;CtEmtQV;;AsEjtQQ;;EAEE;CtEotQV;;AsEltQQ;;EAEE;CtEqtQV;;AsEpuQQ;EAAgC;CtEwuQxC;;AsEvuQQ;;EAEE;CtE0uQV;;AsExuQQ;;EAEE;CtE2uQV;;AsEzuQQ;;EAEE;CtE4uQV;;AsE1uQQ;;EAEE;CtE6uQV;;AsE5vQQ;EAAgC;CtEgwQxC;;AsE/vQQ;;EAEE;CtEkwQV;;AsEhwQQ;;EAEE;CtEmwQV;;AsEjwQQ;;EAEE;CtEowQV;;AsElwQQ;;EAEE;CtEqwQV;;AsEpxQQ;EAAgC;CtEwxQxC;;AsEvxQQ;;EAEE;CtE0xQV;;AsExxQQ;;EAEE;CtE2xQV;;AsEzxQQ;;EAEE;CtE4xQV;;AsE1xQQ;;EAEE;CtE6xQV;;AsE5yQQ;EAAgC;CtEgzQxC;;AsE/yQQ;;EAEE;CtEkzQV;;AsEhzQQ;;EAEE;CtEmzQV;;AsEjzQQ;;EAEE;CtEozQV;;AsElzQQ;;EAEE;CtEqzQV;;AsEp0QQ;EAAgC;CtEw0QxC;;AsEv0QQ;;EAEE;CtE00QV;;AsEx0QQ;;EAEE;CtE20QV;;AsEz0QQ;;EAEE;CtE40QV;;AsE10QQ;;EAEE;CtE60QV;;AsE51QQ;EAAgC;CtEg2QxC;;AsE/1QQ;;EAEE;CtEk2QV;;AsEh2QQ;;EAEE;CtEm2QV;;AsEj2QQ;;EAEE;CtEo2QV;;AsEl2QQ;;EAEE;CtEq2QV;;AsEp3QQ;EAAgC;CtEw3QxC;;AsEv3QQ;;EAEE;CtE03QV;;AsEx3QQ;;EAEE;CtE23QV;;AsEz3QQ;;EAEE;CtE43QV;;AsE13QQ;;EAEE;CtE63QV;;AsEr3QQ;EAAwB;CtEy3QhC;;AsEx3QQ;;EAEE;CtE23QV;;AsEz3QQ;;EAEE;CtE43QV;;AsE13QQ;;EAEE;CtE63QV;;AsE33QQ;;EAEE;CtE83QV;;AsE74QQ;EAAwB;CtEi5QhC;;AsEh5QQ;;EAEE;CtEm5QV;;AsEj5QQ;;EAEE;CtEo5QV;;AsEl5QQ;;EAEE;CtEq5QV;;AsEn5QQ;;EAEE;CtEs5QV;;AsEr6QQ;EAAwB;CtEy6QhC;;AsEx6QQ;;EAEE;CtE26QV;;AsEz6QQ;;EAEE;CtE46QV;;AsE16QQ;;EAEE;CtE66QV;;AsE36QQ;;EAEE;CtE86QV;;AsE77QQ;EAAwB;CtEi8QhC;;AsEh8QQ;;EAEE;CtEm8QV;;AsEj8QQ;;EAEE;CtEo8QV;;AsEl8QQ;;EAEE;CtEq8QV;;AsEn8QQ;;EAEE;CtEs8QV;;AsEr9QQ;EAAwB;CtEy9QhC;;AsEx9QQ;;EAEE;CtE29QV;;AsEz9QQ;;EAEE;CtE49QV;;AsE19QQ;;EAEE;CtE69QV;;AsE39QQ;;EAEE;CtE89QV;;AsEx9QI;EAAmB;CtE49QvB;;AsE39QI;;EAEE;CtE89QN;;AsE59QI;;EAEE;CtE+9QN;;AsE79QI;;EAEE;CtEg+QN;;AsE99QI;;EAEE;CtEi+QN;;Ac1+QI;EwDlDI;IAAgC;GtEiiRtC;;EsEhiRM;;IAEE;GtEmiRR;;EsEjiRM;;IAEE;GtEoiRR;;EsEliRM;;IAEE;GtEqiRR;;EsEniRM;;IAEE;GtEsiRR;;EsErjRM;IAAgC;GtEyjRtC;;EsExjRM;;IAEE;GtE2jRR;;EsEzjRM;;IAEE;GtE4jRR;;EsE1jRM;;IAEE;GtE6jRR;;EsE3jRM;;IAEE;GtE8jRR;;EsE7kRM;IAAgC;GtEilRtC;;EsEhlRM;;IAEE;GtEmlRR;;EsEjlRM;;IAEE;GtEolRR;;EsEllRM;;IAEE;GtEqlRR;;EsEnlRM;;IAEE;GtEslRR;;EsErmRM;IAAgC;GtEymRtC;;EsExmRM;;IAEE;GtE2mRR;;EsEzmRM;;IAEE;GtE4mRR;;EsE1mRM;;IAEE;GtE6mRR;;EsE3mRM;;IAEE;GtE8mRR;;EsE7nRM;IAAgC;GtEioRtC;;EsEhoRM;;IAEE;GtEmoRR;;EsEjoRM;;IAEE;GtEooRR;;EsEloRM;;IAEE;GtEqoRR;;EsEnoRM;;IAEE;GtEsoRR;;EsErpRM;IAAgC;GtEypRtC;;EsExpRM;;IAEE;GtE2pRR;;EsEzpRM;;IAEE;GtE4pRR;;EsE1pRM;;IAEE;GtE6pRR;;EsE3pRM;;IAEE;GtE8pRR;;EsE7qRM;IAAgC;GtEirRtC;;EsEhrRM;;IAEE;GtEmrRR;;EsEjrRM;;IAEE;GtEorRR;;EsElrRM;;IAEE;GtEqrRR;;EsEnrRM;;IAEE;GtEsrRR;;EsErsRM;IAAgC;GtEysRtC;;EsExsRM;;IAEE;GtE2sRR;;EsEzsRM;;IAEE;GtE4sRR;;EsE1sRM;;IAEE;GtE6sRR;;EsE3sRM;;IAEE;GtE8sRR;;EsE7tRM;IAAgC;GtEiuRtC;;EsEhuRM;;IAEE;GtEmuRR;;EsEjuRM;;IAEE;GtEouRR;;EsEluRM;;IAEE;GtEquRR;;EsEnuRM;;IAEE;GtEsuRR;;EsErvRM;IAAgC;GtEyvRtC;;EsExvRM;;IAEE;GtE2vRR;;EsEzvRM;;IAEE;GtE4vRR;;EsE1vRM;;IAEE;GtE6vRR;;EsE3vRM;;IAEE;GtE8vRR;;EsE7wRM;IAAgC;GtEixRtC;;EsEhxRM;;IAEE;GtEmxRR;;EsEjxRM;;IAEE;GtEoxRR;;EsElxRM;;IAEE;GtEqxRR;;EsEnxRM;;IAEE;GtEsxRR;;EsEryRM;IAAgC;GtEyyRtC;;EsExyRM;;IAEE;GtE2yRR;;EsEzyRM;;IAEE;GtE4yRR;;EsE1yRM;;IAEE;GtE6yRR;;EsE3yRM;;IAEE;GtE8yRR;;EsEtyRM;IAAwB;GtE0yR9B;;EsEzyRM;;IAEE;GtE4yRR;;EsE1yRM;;IAEE;GtE6yRR;;EsE3yRM;;IAEE;GtE8yRR;;EsE5yRM;;IAEE;GtE+yRR;;EsE9zRM;IAAwB;GtEk0R9B;;EsEj0RM;;IAEE;GtEo0RR;;EsEl0RM;;IAEE;GtEq0RR;;EsEn0RM;;IAEE;GtEs0RR;;EsEp0RM;;IAEE;GtEu0RR;;EsEt1RM;IAAwB;GtE01R9B;;EsEz1RM;;IAEE;GtE41RR;;EsE11RM;;IAEE;GtE61RR;;EsE31RM;;IAEE;GtE81RR;;EsE51RM;;IAEE;GtE+1RR;;EsE92RM;IAAwB;GtEk3R9B;;EsEj3RM;;IAEE;GtEo3RR;;EsEl3RM;;IAEE;GtEq3RR;;EsEn3RM;;IAEE;GtEs3RR;;EsEp3RM;;IAEE;GtEu3RR;;EsEt4RM;IAAwB;GtE04R9B;;EsEz4RM;;IAEE;GtE44RR;;EsE14RM;;IAEE;GtE64RR;;EsE34RM;;IAEE;GtE84RR;;EsE54RM;;IAEE;GtE+4RR;;EsEz4RE;IAAmB;GtE64RrB;;EsE54RE;;IAEE;GtE+4RJ;;EsE74RE;;IAEE;GtEg5RJ;;EsE94RE;;IAEE;GtEi5RJ;;EsE/4RE;;IAEE;GtEk5RJ;CACF;;Ac55RI;EwDlDI;IAAgC;GtEm9RtC;;EsEl9RM;;IAEE;GtEq9RR;;EsEn9RM;;IAEE;GtEs9RR;;EsEp9RM;;IAEE;GtEu9RR;;EsEr9RM;;IAEE;GtEw9RR;;EsEv+RM;IAAgC;GtE2+RtC;;EsE1+RM;;IAEE;GtE6+RR;;EsE3+RM;;IAEE;GtE8+RR;;EsE5+RM;;IAEE;GtE++RR;;EsE7+RM;;IAEE;GtEg/RR;;EsE//RM;IAAgC;GtEmgStC;;EsElgSM;;IAEE;GtEqgSR;;EsEngSM;;IAEE;GtEsgSR;;EsEpgSM;;IAEE;GtEugSR;;EsErgSM;;IAEE;GtEwgSR;;EsEvhSM;IAAgC;GtE2hStC;;EsE1hSM;;IAEE;GtE6hSR;;EsE3hSM;;IAEE;GtE8hSR;;EsE5hSM;;IAEE;GtE+hSR;;EsE7hSM;;IAEE;GtEgiSR;;EsE/iSM;IAAgC;GtEmjStC;;EsEljSM;;IAEE;GtEqjSR;;EsEnjSM;;IAEE;GtEsjSR;;EsEpjSM;;IAEE;GtEujSR;;EsErjSM;;IAEE;GtEwjSR;;EsEvkSM;IAAgC;GtE2kStC;;EsE1kSM;;IAEE;GtE6kSR;;EsE3kSM;;IAEE;GtE8kSR;;EsE5kSM;;IAEE;GtE+kSR;;EsE7kSM;;IAEE;GtEglSR;;EsE/lSM;IAAgC;GtEmmStC;;EsElmSM;;IAEE;GtEqmSR;;EsEnmSM;;IAEE;GtEsmSR;;EsEpmSM;;IAEE;GtEumSR;;EsErmSM;;IAEE;GtEwmSR;;EsEvnSM;IAAgC;GtE2nStC;;EsE1nSM;;IAEE;GtE6nSR;;EsE3nSM;;IAEE;GtE8nSR;;EsE5nSM;;IAEE;GtE+nSR;;EsE7nSM;;IAEE;GtEgoSR;;EsE/oSM;IAAgC;GtEmpStC;;EsElpSM;;IAEE;GtEqpSR;;EsEnpSM;;IAEE;GtEspSR;;EsEppSM;;IAEE;GtEupSR;;EsErpSM;;IAEE;GtEwpSR;;EsEvqSM;IAAgC;GtE2qStC;;EsE1qSM;;IAEE;GtE6qSR;;EsE3qSM;;IAEE;GtE8qSR;;EsE5qSM;;IAEE;GtE+qSR;;EsE7qSM;;IAEE;GtEgrSR;;EsE/rSM;IAAgC;GtEmsStC;;EsElsSM;;IAEE;GtEqsSR;;EsEnsSM;;IAEE;GtEssSR;;EsEpsSM;;IAEE;GtEusSR;;EsErsSM;;IAEE;GtEwsSR;;EsEvtSM;IAAgC;GtE2tStC;;EsE1tSM;;IAEE;GtE6tSR;;EsE3tSM;;IAEE;GtE8tSR;;EsE5tSM;;IAEE;GtE+tSR;;EsE7tSM;;IAEE;GtEguSR;;EsExtSM;IAAwB;GtE4tS9B;;EsE3tSM;;IAEE;GtE8tSR;;EsE5tSM;;IAEE;GtE+tSR;;EsE7tSM;;IAEE;GtEguSR;;EsE9tSM;;IAEE;GtEiuSR;;EsEhvSM;IAAwB;GtEovS9B;;EsEnvSM;;IAEE;GtEsvSR;;EsEpvSM;;IAEE;GtEuvSR;;EsErvSM;;IAEE;GtEwvSR;;EsEtvSM;;IAEE;GtEyvSR;;EsExwSM;IAAwB;GtE4wS9B;;EsE3wSM;;IAEE;GtE8wSR;;EsE5wSM;;IAEE;GtE+wSR;;EsE7wSM;;IAEE;GtEgxSR;;EsE9wSM;;IAEE;GtEixSR;;EsEhySM;IAAwB;GtEoyS9B;;EsEnySM;;IAEE;GtEsySR;;EsEpySM;;IAEE;GtEuySR;;EsErySM;;IAEE;GtEwySR;;EsEtySM;;IAEE;GtEyySR;;EsExzSM;IAAwB;GtE4zS9B;;EsE3zSM;;IAEE;GtE8zSR;;EsE5zSM;;IAEE;GtE+zSR;;EsE7zSM;;IAEE;GtEg0SR;;EsE9zSM;;IAEE;GtEi0SR;;EsE3zSE;IAAmB;GtE+zSrB;;EsE9zSE;;IAEE;GtEi0SJ;;EsE/zSE;;IAEE;GtEk0SJ;;EsEh0SE;;IAEE;GtEm0SJ;;EsEj0SE;;IAEE;GtEo0SJ;CACF;;Ac90SI;EwDlDI;IAAgC;GtEq4StC;;EsEp4SM;;IAEE;GtEu4SR;;EsEr4SM;;IAEE;GtEw4SR;;EsEt4SM;;IAEE;GtEy4SR;;EsEv4SM;;IAEE;GtE04SR;;EsEz5SM;IAAgC;GtE65StC;;EsE55SM;;IAEE;GtE+5SR;;EsE75SM;;IAEE;GtEg6SR;;EsE95SM;;IAEE;GtEi6SR;;EsE/5SM;;IAEE;GtEk6SR;;EsEj7SM;IAAgC;GtEq7StC;;EsEp7SM;;IAEE;GtEu7SR;;EsEr7SM;;IAEE;GtEw7SR;;EsEt7SM;;IAEE;GtEy7SR;;EsEv7SM;;IAEE;GtE07SR;;EsEz8SM;IAAgC;GtE68StC;;EsE58SM;;IAEE;GtE+8SR;;EsE78SM;;IAEE;GtEg9SR;;EsE98SM;;IAEE;GtEi9SR;;EsE/8SM;;IAEE;GtEk9SR;;EsEj+SM;IAAgC;GtEq+StC;;EsEp+SM;;IAEE;GtEu+SR;;EsEr+SM;;IAEE;GtEw+SR;;EsEt+SM;;IAEE;GtEy+SR;;EsEv+SM;;IAEE;GtE0+SR;;EsEz/SM;IAAgC;GtE6/StC;;EsE5/SM;;IAEE;GtE+/SR;;EsE7/SM;;IAEE;GtEggTR;;EsE9/SM;;IAEE;GtEigTR;;EsE//SM;;IAEE;GtEkgTR;;EsEjhTM;IAAgC;GtEqhTtC;;EsEphTM;;IAEE;GtEuhTR;;EsErhTM;;IAEE;GtEwhTR;;EsEthTM;;IAEE;GtEyhTR;;EsEvhTM;;IAEE;GtE0hTR;;EsEziTM;IAAgC;GtE6iTtC;;EsE5iTM;;IAEE;GtE+iTR;;EsE7iTM;;IAEE;GtEgjTR;;EsE9iTM;;IAEE;GtEijTR;;EsE/iTM;;IAEE;GtEkjTR;;EsEjkTM;IAAgC;GtEqkTtC;;EsEpkTM;;IAEE;GtEukTR;;EsErkTM;;IAEE;GtEwkTR;;EsEtkTM;;IAEE;GtEykTR;;EsEvkTM;;IAEE;GtE0kTR;;EsEzlTM;IAAgC;GtE6lTtC;;EsE5lTM;;IAEE;GtE+lTR;;EsE7lTM;;IAEE;GtEgmTR;;EsE9lTM;;IAEE;GtEimTR;;EsE/lTM;;IAEE;GtEkmTR;;EsEjnTM;IAAgC;GtEqnTtC;;EsEpnTM;;IAEE;GtEunTR;;EsErnTM;;IAEE;GtEwnTR;;EsEtnTM;;IAEE;GtEynTR;;EsEvnTM;;IAEE;GtE0nTR;;EsEzoTM;IAAgC;GtE6oTtC;;EsE5oTM;;IAEE;GtE+oTR;;EsE7oTM;;IAEE;GtEgpTR;;EsE9oTM;;IAEE;GtEipTR;;EsE/oTM;;IAEE;GtEkpTR;;EsE1oTM;IAAwB;GtE8oT9B;;EsE7oTM;;IAEE;GtEgpTR;;EsE9oTM;;IAEE;GtEipTR;;EsE/oTM;;IAEE;GtEkpTR;;EsEhpTM;;IAEE;GtEmpTR;;EsElqTM;IAAwB;GtEsqT9B;;EsErqTM;;IAEE;GtEwqTR;;EsEtqTM;;IAEE;GtEyqTR;;EsEvqTM;;IAEE;GtE0qTR;;EsExqTM;;IAEE;GtE2qTR;;EsE1rTM;IAAwB;GtE8rT9B;;EsE7rTM;;IAEE;GtEgsTR;;EsE9rTM;;IAEE;GtEisTR;;EsE/rTM;;IAEE;GtEksTR;;EsEhsTM;;IAEE;GtEmsTR;;EsEltTM;IAAwB;GtEstT9B;;EsErtTM;;IAEE;GtEwtTR;;EsEttTM;;IAEE;GtEytTR;;EsEvtTM;;IAEE;GtE0tTR;;EsExtTM;;IAEE;GtE2tTR;;EsE1uTM;IAAwB;GtE8uT9B;;EsE7uTM;;IAEE;GtEgvTR;;EsE9uTM;;IAEE;GtEivTR;;EsE/uTM;;IAEE;GtEkvTR;;EsEhvTM;;IAEE;GtEmvTR;;EsE7uTE;IAAmB;GtEivTrB;;EsEhvTE;;IAEE;GtEmvTJ;;EsEjvTE;;IAEE;GtEovTJ;;EsElvTE;;IAEE;GtEqvTJ;;EsEnvTE;;IAEE;GtEsvTJ;CACF;;AchwTI;EwDlDI;IAAgC;GtEuzTtC;;EsEtzTM;;IAEE;GtEyzTR;;EsEvzTM;;IAEE;GtE0zTR;;EsExzTM;;IAEE;GtE2zTR;;EsEzzTM;;IAEE;GtE4zTR;;EsE30TM;IAAgC;GtE+0TtC;;EsE90TM;;IAEE;GtEi1TR;;EsE/0TM;;IAEE;GtEk1TR;;EsEh1TM;;IAEE;GtEm1TR;;EsEj1TM;;IAEE;GtEo1TR;;EsEn2TM;IAAgC;GtEu2TtC;;EsEt2TM;;IAEE;GtEy2TR;;EsEv2TM;;IAEE;GtE02TR;;EsEx2TM;;IAEE;GtE22TR;;EsEz2TM;;IAEE;GtE42TR;;EsE33TM;IAAgC;GtE+3TtC;;EsE93TM;;IAEE;GtEi4TR;;EsE/3TM;;IAEE;GtEk4TR;;EsEh4TM;;IAEE;GtEm4TR;;EsEj4TM;;IAEE;GtEo4TR;;EsEn5TM;IAAgC;GtEu5TtC;;EsEt5TM;;IAEE;GtEy5TR;;EsEv5TM;;IAEE;GtE05TR;;EsEx5TM;;IAEE;GtE25TR;;EsEz5TM;;IAEE;GtE45TR;;EsE36TM;IAAgC;GtE+6TtC;;EsE96TM;;IAEE;GtEi7TR;;EsE/6TM;;IAEE;GtEk7TR;;EsEh7TM;;IAEE;GtEm7TR;;EsEj7TM;;IAEE;GtEo7TR;;EsEn8TM;IAAgC;GtEu8TtC;;EsEt8TM;;IAEE;GtEy8TR;;EsEv8TM;;IAEE;GtE08TR;;EsEx8TM;;IAEE;GtE28TR;;EsEz8TM;;IAEE;GtE48TR;;EsE39TM;IAAgC;GtE+9TtC;;EsE99TM;;IAEE;GtEi+TR;;EsE/9TM;;IAEE;GtEk+TR;;EsEh+TM;;IAEE;GtEm+TR;;EsEj+TM;;IAEE;GtEo+TR;;EsEn/TM;IAAgC;GtEu/TtC;;EsEt/TM;;IAEE;GtEy/TR;;EsEv/TM;;IAEE;GtE0/TR;;EsEx/TM;;IAEE;GtE2/TR;;EsEz/TM;;IAEE;GtE4/TR;;EsE3gUM;IAAgC;GtE+gUtC;;EsE9gUM;;IAEE;GtEihUR;;EsE/gUM;;IAEE;GtEkhUR;;EsEhhUM;;IAEE;GtEmhUR;;EsEjhUM;;IAEE;GtEohUR;;EsEniUM;IAAgC;GtEuiUtC;;EsEtiUM;;IAEE;GtEyiUR;;EsEviUM;;IAEE;GtE0iUR;;EsExiUM;;IAEE;GtE2iUR;;EsEziUM;;IAEE;GtE4iUR;;EsE3jUM;IAAgC;GtE+jUtC;;EsE9jUM;;IAEE;GtEikUR;;EsE/jUM;;IAEE;GtEkkUR;;EsEhkUM;;IAEE;GtEmkUR;;EsEjkUM;;IAEE;GtEokUR;;EsE5jUM;IAAwB;GtEgkU9B;;EsE/jUM;;IAEE;GtEkkUR;;EsEhkUM;;IAEE;GtEmkUR;;EsEjkUM;;IAEE;GtEokUR;;EsElkUM;;IAEE;GtEqkUR;;EsEplUM;IAAwB;GtEwlU9B;;EsEvlUM;;IAEE;GtE0lUR;;EsExlUM;;IAEE;GtE2lUR;;EsEzlUM;;IAEE;GtE4lUR;;EsE1lUM;;IAEE;GtE6lUR;;EsE5mUM;IAAwB;GtEgnU9B;;EsE/mUM;;IAEE;GtEknUR;;EsEhnUM;;IAEE;GtEmnUR;;EsEjnUM;;IAEE;GtEonUR;;EsElnUM;;IAEE;GtEqnUR;;EsEpoUM;IAAwB;GtEwoU9B;;EsEvoUM;;IAEE;GtE0oUR;;EsExoUM;;IAEE;GtE2oUR;;EsEzoUM;;IAEE;GtE4oUR;;EsE1oUM;;IAEE;GtE6oUR;;EsE5pUM;IAAwB;GtEgqU9B;;EsE/pUM;;IAEE;GtEkqUR;;EsEhqUM;;IAEE;GtEmqUR;;EsEjqUM;;IAEE;GtEoqUR;;EsElqUM;;IAEE;GtEqqUR;;EsE/pUE;IAAmB;GtEmqUrB;;EsElqUE;;IAEE;GtEqqUJ;;EsEnqUE;;IAEE;GtEsqUJ;;EsEpqUE;;IAEE;GtEuqUJ;;EsErqUE;;IAEE;GtEwqUJ;CACF;;AuExuUA;EAAkB;CvE4uUlB;;AuExuUA;EAAiB;CvE4uUjB;;AuE3uUA;EAAiB;CvE+uUjB;;AuE9uUA;EAAiB;CvEkvUjB;;AuEjvUA;ECTE;EACA;EACA;CxE8vUF;;AuE/uUI;EAAwB;CvEmvU5B;;AuElvUI;EAAwB;CvEsvU5B;;AuErvUI;EAAwB;CvEyvU5B;;AcptUI;EyDvCA;IAAwB;GvEgwU1B;;EuE/vUE;IAAwB;GvEmwU1B;;EuElwUE;IAAwB;GvEswU1B;CACF;;AcluUI;EyDvCA;IAAwB;GvE8wU1B;;EuE7wUE;IAAwB;GvEixU1B;;EuEhxUE;IAAwB;GvEoxU1B;CACF;;AchvUI;EyDvCA;IAAwB;GvE4xU1B;;EuE3xUE;IAAwB;GvE+xU1B;;EuE9xUE;IAAwB;GvEkyU1B;CACF;;Ac9vUI;EyDvCA;IAAwB;GvE0yU1B;;EuEzyUE;IAAwB;GvE6yU1B;;EuE5yUE;IAAwB;GvEgzU1B;CACF;;AuE3yUA;EAAmB;CvE+yUnB;;AuE9yUA;EAAmB;CvEkzUnB;;AuEjzUA;EAAmB;CvEqzUnB;;AuEjzUA;EAAuB;CvEqzUvB;;AuEpzUA;EAAuB;CvEwzUvB;;AuEvzUA;EAAuB;CvE2zUvB;;AuE1zUA;EAAuB;CvE8zUvB;;AuE7zUA;EAAuB;CvEi0UvB;;AuEh0UA;EAAuB;CvEo0UvB;;AuEh0UA;EAAc;CvEo0Ud;;AyE32UE;EACE;CzE82UJ;;AKp2UE;;EoELM;CzE82UR;;AyEp3UE;EACE;CzEu3UJ;;AK72UE;;EoELM;CzEu3UR;;AyE73UE;EACE;CzEg4UJ;;AKt3UE;;EoELM;CzEg4UR;;AyEt4UE;EACE;CzEy4UJ;;AK/3UE;;EoELM;CzEy4UR;;AyE/4UE;EACE;CzEk5UJ;;AKx4UE;;EoELM;CzEk5UR;;AyEx5UE;EACE;CzE25UJ;;AKj5UE;;EoELM;CzE25UR;;AyEj6UE;EACE;CzEo6UJ;;AK15UE;;EoELM;CzEo6UR;;AyE16UE;EACE;CzE66UJ;;AKn6UE;;EoELM;CzE66UR;;AuEt4UA;EAAa;CvE04Ub;;AuEz4UA;EAAc;CvE64Ud;;AuE34UA;EAAiB;CvE+4UjB;;AuE94UA;EAAiB;CvEk5UjB;;AuE94UA;EGvDE;EACA;EACA;EACA;EACA;C1Ey8UF;;AuEl5UA;EAAwB;CvEs5UxB;;AuEp5UA;EACE;EACA;CvEu5UF;;AuEl5UA;EAAc;CvEs5Ud;;A2Ev9UA;EACE;C3E09UF;;A2Ev9UA;EACE;C3E09UF;;A4E19UE;EACE;;;IAKE;IAEA;G5E09UJ;;E4Et9UI;IACE;G5Ey9UN;;E4Eh9UE;IACE;G5Em9UJ;;E4Er8UE;IACE;G5Ew8UJ;;E4Et8UE;;IAEE;IACA;G5Ey8UJ;;E4Ej8UE;IACE;G5Eo8UJ;;E4Ej8UE;;IAEE;G5Eo8UJ;;E4Ej8UE;;;IAGE;IACA;G5Eo8UJ;;E4Ej8UE;;IAEE;G5Eo8UJ;;A4E57UE;IACE;C5E+7UN;;E4E77UI;IACE;G5Eg8UJ;;E4E97UE;IACE;G5Ei8UJ;;E4E77UE;IACE;G5Eg8UJ;;E4E97UE;IACE;G5Ei8UJ;;E4E97UE;IACE;G5Ei8UJ;;E4E/7UI;;IAEE;G5Ek8UN;;E4E77UI;;IAEE;G5Eg8UN;;E4E57UE;IACE;G5E+7UJ;;E4E77UI;;;;IAIE;G5Eg8UN;;E4E57UE;IACE;IACA;G5E+7UJ;CACF;;A6EvkVA;EACE;C7E0kVF;;A6ExkVA;EACE;EACA;C7E2kVF;;A6EzkVA;;EAEE;C7E4kVF;;A6E1kVA;EACE;EACA;C7E6kVF;;A6E3kVA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C7E8kVF;;A6E5kVA;;EAEE;EACA;EACA;EACA;EACA;EACA;C7E+kVF;;A6E7kVA;;0D7EilVyD;;A6E9kVzD;EACE;EACA;EACA;EACA;EACA;C7EilVF;;A6E/kVA;EACE;EACA;EACA;C7EklVF;;A6EhlVA;EACE;EACA;EACA;C7EmlVF;;A6EjlVA;EACE;EACA;EACA;C7EolVF;;A6EllVA;EACE;EACA;EACA;C7EqlVF;;A6EnlVA;EACE;EACA;C7EslVF;;A6EplVA;EACE;EACA;C7EulVF;;A6ErlVA;EACE;EACA;C7EwlVF;;A6EtlVA;EACE;EACA;C7EylVF;;A6EvlVA;EACE;EACA;EACA;C7E0lVF;;A6EvlVA;EAGE;C7E0lVF;;A6ExlVA;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;C7E2lVF;;A6EzlVA;EAGE;EACA;EACA;EACA;EACA;C7E4lVF;;A6E1lVA;EACE;C7E6lVF;;A6E3lVA;EACE;C7E8lVF;;A6E5lVA;EACE;C7E+lVF;;A6E7lVA;EACE;C7EgmVF;;A6E9lVA;;EAEE;EACA;EACA;C7EimVF;;A6E/lVA;;EAEE;EACA;EACA;C7EkmVF;;A6EhmVA;EACE;C7EmmVF;;A6EjmVA;EACE;C7EomVF;;A6ElmVA;EACE;C7EqmVF;;A6EnmVA;EACE;C7EsmVF;;A6EpmVA;EACE;C7EumVF;;A6EpmVA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C7EumVF;;A6EpmVA;;AACA;EACE;IACE;IACA;G7EwmVF;;E6EtmVA;IACE;IACA;G7EymVF;CACF;;A6EvmVA;EACE;IACE;IACA;G7E0mVF;;E6ExmVA;IACE;IACA;G7E2mVF;CACF;;A6EzmVA;EACE;IACE;IACA;G7E4mVF;CACF;;A8E/vVI;EACI;C9EkwVR;;A8E7vVQ;EACI;EACA;C9EgwVZ;;A8E7vVQ;EACI;EACA;C9EgwVZ;;A8E1vVI;EACI;EACA;C9E6vVR;;A8E3vVQ;EACI;EACA;EACA;EACA;EACA;EACA;C9E8vVZ;;A8E3vVQ;EACI;EACA;C9E8vVZ;;A8E3vVQ;EACI;C9E8vVZ;;A8E3vVQ;;;EAGI;C9E8vVZ;;A8E3vVQ;;EAEI;C9E8vVZ;;A8E1vVY;EACI;EACA;C9E6vVhB;;A8E1vVY;EACI;EACA;C9E6vVhB;;A8EzvVQ;EACI;C9E4vVZ;;A8EzvVQ;EACI;EACA;C9E4vVZ;;A8EzvVQ;EACI;C9E4vVZ;;A8ErvVQ;EACI;C9EwvVZ;;A8EtvVQ;EACI;C9EyvVZ;;A8EnvVI;EACI;EACA;C9EsvVR;;A8EnvVI;EACI;C9EsvVR;;A8EpvVQ;EACI;C9EuvVZ;;A8EnvVY;EACI;EACA;EACA;C9EsvVhB;;A8EpvVgB;EACI;C9EuvVpB;;A8EnvVY;EACI;C9EsvVhB;;A8EnvVY;EACI;C9EsvVhB;;A8EnvVY;EACI;C9EsvVhB;;A8EnvVY;EACI;C9EsvVhB;;A8EpvVgB;EACI;C9EuvVpB;;A8ErvVoB;EACI;C9EwvVxB;;A8EpvVgB;EACI;C9EuvVpB;;A8EhvVI;EACI;EACA;C9EmvVR;;A8E/uVQ;EACI;C9EkvVZ;;A8EhvVY;EACI;EACA;C9EmvVhB;;A8E/uVQ;EACI;EACA;C9EkvVZ;;A8EhvVY;EACI;EACA;C9EmvVhB;;A8E/uVQ;EACI;EACA;C9EkvVZ;;A8EhvVY;;;EACI;EACA;C9EqvVhB;;A8EzuVY;EACI;C9E4uVhB;;A8EzuVY;EACI;C9E4uVhB;;A8EzuVY;EAKI;EACA;EACA;C9EwuVhB;;A8E9uVgB;EACI;C9EivVpB;;A8ExuVQ;EACI;C9E2uVZ;;A8ExuVQ;EACI;C9E2uVZ;;A8EnuVQ;EACI;C9EsuVZ;;A8EnuVgB;;EACI;C9EuuVpB;;A8EpuVgB;EAKI;C9EmuVpB;;A8EvuVoB;EACI;C9E0uVxB;;A8EnuVY;EACI;C9EsuVhB;;A8E5tVY;EACI;EACA;C9E+tVhB;;A8E5tVY;EACI;EACA;C9E+tVhB;;A8E5tVY;EACI;EACA;C9E+tVhB;;A8E5tVY;EACI;C9E+tVhB;;A8E3tVQ;EACI;C9E8tVZ;;A8EvtVI;EACI;C9E0tVR;;A8EvtVY;EACI;EACA;C9E0tVhB;;A8EvtVY;EACI;C9E0tVhB;;A8EvtVY;EACI;EACA;C9E0tVhB;;A8EptVI;;EACI;EACA;C9EwtVR;;A8ErtVI;;EACI;EACA;C9EytVR;;A8EttVI;EAKI;EACA;C9EqtVR;;A8E1tVQ;EACI;C9E6tVZ;;A8EntVQ;EACI;EACA;C9EstVZ;;A8EntVQ;EACI;C9EstVZ;;A8EntVQ;EACI;C9EstVZ;;A8EntVQ;EACI;C9EstVZ;;A8EntVQ;EACI;EACA;C9EstVZ;;A8E/sVQ;EACI;C9EktVZ;;A8E/sVQ;EACI;C9EktVZ;;A8E/sVQ;EACI;C9EktVZ;;A8E/sVQ;EACI;C9EktVZ;;A8E/sVQ;EACI;EACA;C9EktVZ;;A8EhtVY;EACI;EACA;EACA;C9EmtVhB;;A8EhtVY;EACI;C9EmtVhB;;A8EhtVY;EACI;C9EmtVhB;;A8E/sVY;EACI;C9EktVhB;;A8E5sVY;EACI;C9E+sVhB;;A8E5sVY;EACI;C9E+sVhB;;A8E3sVQ;EACI;C9E8sVZ;;A8EzsVI;EAEI;EACA;C9E2sVR;;A8EzsVQ;EACE;EACA;C9E4sVV;;A8EvsVI;EvDlZF;EACA;CvB6lWF;;AKlpWE;EkBwDE;EACA;EACA;CvB8lWJ;;AuB3lWE;;EAEE;CvB8lWJ;;AuB3lWE;;EAEE;EACA;CvB8lWJ;;AuB3lWE;;;EAGE;EACA;EACA;CvB8lWJ;;AuB5lWI;;;EAKI;CvB6lWR;;A8EtuVI;EACI;C9EyuVR;;A8EruVI;EACI;C9EwuVR;;A8EtuVQ;EACI;EACA;C9EyuVZ;;A8EvuVY;EACI;EACA;C9E0uVhB;;A8ExuVgB;EACI;EACA;C9E2uVpB;;A8EvuVY;EACI;EACA;C9E0uVhB;;A8EruVY;EACI;EACA;C9EwuVhB;;A8EruVoB;EACI;C9EwuVxB;;A8EruVoB;EACI;C9EwuVxB;;A8E5tVY;;;EAGI;C9E+tVhB;;A8E3tVQ;EACI;EACA;C9E8tVZ;;A8E3tVQ;EACI;EACA;C9E8tVZ;;A8EttVQ;EACI;C9EytVZ;;A8ErtVY;EACI;C9EwtVhB;;A8E/sVQ;EACI;C9EktVZ;;A8E7sVY;EACI;C9EgtVhB;;A8E7sVY;EACI;EACA;EACA;C9EgtVhB;;A8E5sVQ;EACI;C9E+sVZ;;A8E3sVI;EACI;C9E8sVR;;A8EzsVQ;EACI;C9E4sVZ;;A8E1sVQ;EACI;C9E6sVZ;;A8E1sVQ;EACI;C9E6sVZ;;A8EzsVI;EACI;IACI;IACA;G9E4sVV;CACF;;A+EpyWA;;;EACI;EACA;C/EyyWJ;;A+EtyWA;EACI;EACA;EACA;EAEA;C/EwyWJ;;A+EtyWI;EACI;C/EyyWR;;A+EryWA;;;;;;EACI;EACA;C/E6yWJ;;A+E1yWA;EACI;C/E6yWJ;;A+E3yWI;;EACI;EACA;EACA;C/E+yWR;;A+E1yWA;;EACI;EACA;EACA;EACA;EACA;C/E8yWJ;;A+E3yWA;;EACI;EACA;C/E+yWJ;;A+E5yWA;;;EACI;C/EizWJ;;A+E9yWA;EAAW;C/EkzWX;;A+EhzWA;EACI;C/EmzWJ;;A+EhzWA;EACI;IAAK;G/EozWP;CACF;;A+EtzWA;EACI;IAAK;G/EozWP;CACF;;A+ElzWA;EACI;UAAA;C/EqzWJ;;A+ElzWA;EACI;EACA;EACA;EACA;EACA;C/EqzWJ;;A+ElzWA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C/EqzWJ;;A+ElzWA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/EqzWJ;;A+EnzWI;EACI;C/EszWR;;A+EnzWI;EACI;EACA;EACA;EACA;EACA;C/EszWR;;A+ElzWA;EACI;EACA;EACA;C/EqzWJ;;A+ElzWA;EACI;C/EqzWJ;;A+ElzWA;EACI;EACA;EACA;C/EqzWJ;;A+ElzWA;EACI;EACA;C/EqzWJ;;AgFn7WA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ChFs7WJ;;AgFn7WA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ChFs7WJ;;AgFn7WA;EACI;EACA;ChFs7WJ;;AgFp7WI;EACI;ChFu7WR;;AgFp7WI;EACI;ChFu7WR;;AgFp7WI;EACI;ChFu7WR;;AgFp7WI;EACI;EACA;EACA;ChFu7WR;;AgFp7WI;EACI;EACA;ChFu7WR;;AgFn7WA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ChFs7WJ;;AgFn7WA;;EAEI;EACA;ChFs7WJ;;AgFn7WA;EACI;EACA;EACA;EACA;EACA;ChFs7WJ;;AgFp7WI;EACI;ChFu7WR;;AgFn7WA;EACI;EACA;ChFs7WJ;;AgFp7WI;EACI;ChFu7WR;;AgFp7WI;EACI;ChFu7WR;;AgFp7WI;EACI;EACA;ChFu7WR;;AgFp7WI;EACI;EACA;EACA;EAIA;EACA;ChFu7WR;;AgFn7WA;EACI;ChFs7WJ;;AgFj7WA;EAEI;IACI;GhFm7WN;;EgFh7WE;IACI;IACA;GhFm7WN;;EgFh7WE;IACI;GhFm7WN;;EgFh7WE;IACI;GhFm7WN;;EgFh7WE;;IAEI;IACA;GhFm7WN;;EgFh7WE;IACI;GhFm7WN;CACF;;AiF9jXI;EACI;CjFikXR;;AiF/jXQ;EACI;CjFkkXZ;;AiF9jXI;EACI;EACA;EACA;CjFikXR;;AiF/jXQ;EACI;EACA;EACA;EACA;EACA;EACA;CjFkkXZ;;AiF/jXQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CjFkkXZ;;AiF7jXI;EACI;EACA;CjFgkXR;;AiF9jXQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CjFikXZ;;AiF9jXQ;EACI;CjFikXZ;;AiF9jXQ;EACI;CjFikXZ;;AkF1nXA;EACI;ClF6nXJ;;AkF1nXA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ClF6nXJ;;AkF3nXI;;;EAGI;ClF8nXR;;AkF1nXA;EACI;EACA;EACA;ClF6nXJ;;AkF3nXI;EACI;EACA;EACA;EACA;EACA;EACA;ClF8nXR;;AkF5nXQ;EACI;ClF+nXZ;;AkF7nXQ;EACI;ClFgoXZ;;AkF7nXQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ClFgoXZ;;AkF7nXQ;EACI;EACA;ClFgoXZ;;AkF3nXI;EACI;EACA;ClF8nXR;;AkF3nXI;EACI;EACA;EACA;ClF8nXR;;AkF3nXI;EACI;ClF8nXR;;AkF5nXQ;EACI;EACA;ClF+nXZ;;AkF5nXQ;EACI;ClF+nXZ;;AkF7nXQ;EACI;ClFgoXZ;;AkF5nXK;EACG;ClF+nXR;;AkF7nXQ;EACI;EACA;EACA;EACA;ClFgoXZ;;AkF3nXA;EAEI;IACI;IACA;GlF6nXN;;EkF1nXE;IACI;GlF6nXN;;EkF3nXM;IACI;IACA;GlF8nXV;CACF;;AmF3uXA;EACI;EACA;EACA;CnF8uXJ;;AmF1uXQ;EACI;CnF6uXZ;;AmF3uXY;EACI;EACA;CnF8uXhB;;AmF5uXgB;EACI;CnF+uXpB;;AmF3uXQ;EACI;EACA;EACA;EACA;EACA;EACA;CnF8uXZ;;AmF5uXY;EACI;CnF+uXhB;;AmF5uXQ;EACI;EACA;CnF+uXZ;;AmFxuXgB;EACI;CnF2uXpB;;AmFzuXoB;EACI;CnF4uXxB;;AmFvuXQ;EACI;EACA;CnF0uXZ;;AmFzuXY;EACQ;CnF4uXpB;;AmF1uXgB;EACI;CnF6uXpB;;AmFzuXY;EACI;CnF4uXhB;;AoFzyXA;EACI;EACA;CpF4yXJ;;AoF1yXI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CpF6yXR;;AoF3yXQ;EACI;CpF8yXZ;;AoF3yXQ;EACI;CpF8yXZ;;AoFxyXA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CpF2yXJ;;AoFzyXI;EACI;CpF4yXR;;AqFt1XA;EACI;EACA;CrFy1XJ;;AqFv1XI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CrF01XR;;AqFv1XI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CrF01XR;;AqFv1XI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CrF01XR;;AqFv1XI;EACI;CrF01XR;;AqFv1XI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CrF01XR;;AqFx1XQ;EACI;CrF21XZ;;AqFx1XQ;EACI;EACA;EACA;EACA;EACA;EACA;CrF21XZ;;AqFj2XQ;EACI;EACA;EACA;EACA;EACA;EACA;CrF21XZ;;AqFj2XQ;EACI;EACA;EACA;EACA;EACA;EACA;CrF21XZ;;AqFj2XQ;EACI;EACA;EACA;EACA;EACA;EACA;CrF21XZ;;AqFj2XQ;EACI;EACA;EACA;EACA;EACA;EACA;CrF21XZ;;AqFx1XQ;EACI;CrF21XZ;;AqFx1XQ;EACI;CrF21XZ;;AqFx1XQ;EACI;EACA;CrF21XZ;;AqFx1XQ;EACI;CrF21XZ;;AqFx1XQ;EACI;CrF21XZ;;AsFh8XA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CtFk8XJ;;AsFh8XI;;EACI;EACA;EACA;EACA;CtFo8XR;;AsFj8XI;;EACI;EACA;EACA;EACA;EACA;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AsFl8XI;EACI;CtFq8XR;;AuFz/XA;EACI;EACA;CvF4/XJ;;AuF1/XI;EACI;EACA;EACA;CvF6/XR;;AuF1/XI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CvF6/XR;;AuF1/XI;EACI;EACA;CvF6/XR;;AwFrhYA;EACI;CxFwhYJ;;AwFthYI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CxFyhYR;;AwFvhYQ;EACI;EACA;EACA;EACA;EACA;EACA;CxF0hYZ;;AwFhiYQ;EACI;EACA;EACA;EACA;EACA;EACA;CxF0hYZ;;AwFhiYQ;EACI;EACA;EACA;EACA;EACA;EACA;CxF0hYZ;;AwFhiYQ;EACI;EACA;EACA;EACA;EACA;EACA;CxF0hYZ;;AwFhiYQ;EACI;EACA;EACA;EACA;EACA;EACA;CxF0hYZ;;AwFvhYQ;EACI;CxF0hYZ;;AwFvhYQ;EACI;CxF0hYZ;;AwFvhYQ;EACI;EACA;CxF0hYZ;;AwFvhYQ;EACI;CxF0hYZ;;AyF/jYI;EACI;EACA;EACA;CzFkkYR;;AyF/jYI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CzFkkYR;;AyF/jYI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CzFkkYR;;AyF/jYI;EACI;CzFkkYR;;AyF/jYI;EACI;EACA;EACA;CzFkkYR;;AyF/jYI;EACI;CzFkkYR;;A0FvmYA;EACE;IACE;IACA;G1F0mYF;;E0FxmYA;IACE;IACA;G1F2mYF;;E0FzmYA;IACE;G1F4mYF;CACF;;A0FvnYA;EACE;IACE;IACA;G1F0mYF;;E0FxmYA;IACE;IACA;G1F2mYF;;E0FzmYA;IACE;G1F4mYF;CACF;;A0FjmYA;EACI;EACA;EACA;C1FomYJ;;A0FjmYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;C1FmmYJ;;A0FxnYI;EACE;UAAA;C1F2nYN;;A0F5nYI;EACE;UAAA;C1F+nYN;;A0FhoYI;EACE;UAAA;C1FmoYN;;A0FpoYI;EACE;UAAA;C1FuoYN;;A0FjnYI;ECxCF;UAAA;ED2CM;EACA;EACA;EACA;EACA;EACA;EACA;EACA;UAAA;C1FmnYR;;A4F1qYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C5F6qYJ;;A4F3qYI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C5F8qYR;;A4F3qYI;EACI;EACA;C5F8qYR;;A4F3qYI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C5F8qYR;;A4F3qYI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C5F8qYR;;A6FhuYA;EACI;EACA;C7FmuYJ;;A6FjuYI;EACE;EACA;EACA;EACA;C7FouYN;;A6FjuYI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C7FouYN;;A6FjuYI;EACE;C7FouYN;;A6FluYM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C7FquYR;;A6FjuYI;EACE;C7FouYN;;A6FluYM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C7FquYR;;A6FjuYI;EACE;C7FouYN;;A6FluYM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C7FquYR;;A6FjuYI;EACE;C7FouYN;;A6FluYM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C7FquYR;;A6F9tYM;EACE;EACA;EACA;EACA;EACA;C7FiuYR;;A6F9tYM;EACE;C7FiuYR;;A6F7tYI;EACE;EACA;EACA;C7FguYN;;A6F7tYI;EACE;EACA;EACA;C7FguYN;;A8F10YA;EAMI;C9Fw0YJ;;A8F70YI;EACI;EACA;C9Fg1YR;;A8Fz0YA;;;;;;EACI;C9Fi1YJ;;A8F90YA;EACI;EACA;C9Fi1YJ;;A8F/0YI;;;EACI;C9Fo1YR;;A8Fh1YA;EACI;EACA;C9Fm1YJ;;A8Fj1YI;;;EACI;C9Fs1YR;;A8Fl1YA;EvE1BE;EFAE;EEEF;CvBg3YF;;AK52YE;EkBAE;EFNA;EEQA;CvBg3YJ;;AuB72YE;;EAEE;EFbA;EEeA;EAKE;CvB42YN;;AuBv2YE;;EAEE;EACA;EACA;CvB02YJ;;AuBn2YE;;;EAGE;EACA;EAIA;CvBm2YJ;;AuBj2YI;;;EAKI;CvBk2YR;;A8Ft3YA;EvE2BE;EACA;CvB+1YF;;AKp5YE;EkBwDE;EACA;EACA;CvBg2YJ;;AuB71YE;;EAEE;CvBg2YJ;;AuB71YE;;EAEE;EACA;CvBg2YJ;;AuB71YE;;;EAGE;EACA;EACA;CvBg2YJ;;AuB91YI;;;EAKI;CvB+1YR;;A8Ft5YA;EvEnCE;EFAE;EEEF;CvB67YF;;AKz7YE;EkBAE;EFNA;EEQA;CvB67YJ;;AuB17YE;;EAEE;EFbA;EEeA;EAKE;CvBy7YN;;AuBp7YE;;EAEE;EACA;EACA;CvBu7YJ;;AuBh7YE;;;EAGE;EACA;EAIA;CvBg7YJ;;AuB96YI;;;EAKI;CvB+6YR;;A8Fz7YA;EACI;C9F47YJ;;A8Fz7YA;EACI;EACA;C9F47YJ;;A8Fz7YA;EACI;EACA;C9F47YJ;;A8F17YI;EACI;C9F67YR;;A8Fx7YA;EACI;EACA;C9F27YJ;;A8Fx7YA;EACI;C9F27YJ;;A8Ft7YA;EACI;C9Fy7YJ;;A8Fp7YA;;;EACI;C9Fy7YJ;;A8Fv7YI;;;EACI;C9F47YR;;A8Fr7YI;EACI;EACA;C9Fw7YR;;A8Ft7YI;EACI;EACA;C9Fy7YR;;A8Fr7YI;EACI;EACA;C9Fw7YR;;A8Ft7YI;EACI;EACA;C9Fy7YR;;A8Fr7YA;EACI;EACA;EACA;EACA;EACA;EACA;C9Fw7YJ;;A8Ft7YI;EACI;C9Fy7YR;;A8Fr7YA;EACI;C9Fw7YJ;;A8Fr7YA;EACI;C9Fw7YJ;;A8Fr7YA;EACI;EACA;EACA;C9Fw7YJ;;A8Ft7YI;EACI;C9Fy7YR;;A8Fr7YA;EACI;C9Fw7YJ;;A8Fr7YA;EACI;EACA;EACA;C9Fw7YJ;;A8Ft7YI;EACI;C9Fy7YR;;A8Fr7YA;EACI;EACA;C9Fw7YJ;;A+FzlZA;EACE;EACA;EAEA;C/F4lZF;;AgG/lZA;EACI;EACA;EACA;ChGkmZJ;;AgGhmZI;EAGI;EACA;ChGimZR;;AqD1mZE;EACE;EACA;EACA;CrD6mZJ;;AgGrmZQ;EACI;ChGwmZZ;;AgGrmZQ;EACI;EACA;EACA;ChGwmZZ;;AgGrmZQ;EACI;EACA;EACA;ChGwmZZ;;AgGrmZQ;EACI;EACA;ChGwmZZ;;AgGrmZQ;EACI;EACA;ChGwmZZ;;AgGrmZQ;EACI;EACA;ChGwmZZ;;AgGrmZQ;EACI;EACA;ChGwmZZ;;AgGnmZI;EACI;ChGsmZR;;AgGnmZI;EACI;EACA;EACA;ChGsmZR;;AgGnmZI;EACI;ChGsmZR;;AgGnmZI;EACI;ChGsmZR;;AgGpmZQ;EACI;ChGumZZ;;AgGpmZQ;EACI;ChGumZZ;;AgGpmZQ;EACI;ChGumZZ;;AgGpmZQ;EACI;ChGumZZ;;AgG3lZQ;;;;;;;;;;;;;;;;;;;;;EACI;ChGknZZ;;AgG1mZA;EAEI;IAEI;GhG2mZN;CACF;;AiGntZA;EACI;CjGstZJ;;AiGjtZI;EACI;EACA;CjGotZR;;AiGltZQ;;;EACI;EACA;CjGutZZ;;AiGntZI;EACI;CjGstZR;;AiGntZI;EACI;CjGstZR;;AiGhtZI;EACI;EACA;CjGmtZR;;AiGjtZQ;;;EACI;EACA;CjGstZZ;;AiGltZI;EACI;CjGqtZR;;AiGltZI;EACI;CjGqtZR;;AiG/sZI;EACI;EACA;EACA;EACA;CjGktZR;;AiGhtZQ;;;EACI;EACA;CjGqtZZ;;AiGltZQ;EACI;EACA;EACA;CjGqtZZ;;AiGntZY;;;EACI;EACA;EACA;CjGwtZhB;;AqD5xZE;EACE;EACA;EACA;CrD+xZJ;;AiGntZI;EACI;EACA;EACA;EACA;EACA;EACA;CjGstZR;;AiGptZQ;EACI;EACA;EACA;CjGutZZ;;AiGptZQ;EACI;EACA;EACA;EACA;EACA;EACA;CjGutZZ;;AiGrtZY;;;EACI;EACA;CjG0tZhB;;AiGvtZY;EACI;EACA;CjG0tZhB;;AiGxtZgB;;;EACI;EACA;CjG6tZpB;;AiGvtZI;EACI;CjG0tZR;;AiGxtZQ;EACI;CjG2tZZ;;AiGztZY;;;EACI;EACA;CjG8tZhB;;AiG3tZY;EACI;EACA;CjG8tZhB;;AiG5tZgB;;;EACI;EACA;CjGiuZpB;;AiG3tZI;EACI;CjG8tZR;;AiG5tZQ;EACI;CjG+tZZ;;AiG5tZQ;EACI;EACA;EACA;CjG+tZZ;;AiG7tZY;EACI;EACA;EACA;EACA;CjGguZhB;;AiG7tZY;;;EACI;EACA;EACA;CjGkuZhB;;AiG5tZA;EACI;EACA;EACA;EAEA;CjG+tZJ;;AiG7tZI;EACI;CjGguZR;;AiG7tZI;EACI;EACA;CjGguZR;;AiG7tZI;EACI;CjGguZR;;AiG5tZA;EACI;CjG+tZJ;;AkG95ZA;EACI;EACA;EACA;EACA;EACA;EACA;ClGi6ZJ;;AkG95ZA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClGi6ZJ;;AkG/5ZI;EACI;ClGk6ZR;;AkG/5ZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClGk6ZR;;AkG/5ZI;EACI;EACA;EACA;ClGk6ZR;;AkG/5ZI;EACI;EACA;ClGk6ZR;;AkG/5ZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClGk6ZR;;AkG/5ZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClGk6ZR;;AkG95ZI;EACI;EACA;ClGi6ZR;;AmGx+ZI;;EAEI;EACA;EACA;EACA;EACA;CnG2+ZR;;AmGx+ZI;EACI;EACA;CnG2+ZR;;AmGv+ZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CnG0+ZR;;AmGv+ZI;EACI;CnG0+ZR;;AmGv+ZQ;EACI;CnG0+ZZ;;AmGv+ZQ;EACI;EACA;EACA;CnG0+ZZ;;AmGr+ZI;EACI;EACA;EACA;CnGw+ZR;;AmGr+ZI;EACI;CnGw+ZR;;AmGv+ZQ;EACI;CnG0+ZZ;;AmGv+ZQ;EACI;EACA;CnG0+ZZ;;AmGv+ZQ;EACI;CnG0+ZZ;;AmGv+ZQ;EACI;EACA;EACA;EACA;CnG0+ZZ;;AmGx+ZY;EACI;EACA;CnG2+ZhB;;AmGx+ZY;EACI;EACA;CnG2+ZhB;;AmGt+ZI;EACI;EACA;CnGy+ZR;;AmGp+ZQ;EACI;EACA;EACA;CnGu+ZZ;;AmGp+ZQ;EACI;EACA;EACA;CnGu+ZZ;;AmGl+ZA;EACI;CnGq+ZJ;;AmGn+ZI;EACI;CnGs+ZR;;AmGh+ZA;EACI;EACA;EACA;EACA;EACA;CnGm+ZJ;;AmGh+ZA;EACI;EACA;CnGm+ZJ;;AmGh+ZA;EACI;EACA;EACA;EACA;CnGm+ZJ;;AmGh+ZA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnGm+ZJ;;AmGh+ZA;EACI;EACA;CnGm+ZJ;;AmGh+ZA;EACI;CnGm+ZJ;;AmGh+ZA;EACI;EACA;EACA;EACA;EACA;CnGm+ZJ;;AmGh+ZA;EACI;EACA;EACA;EACA;EACA;EACA;CnGm+ZJ;;AmGh+ZA;;EAEI;EACA;EACA;CnGm+ZJ;;AmGh+ZA;EACI;EACA;EACA;CnGm+ZJ;;AmGh+ZA;;;EAII;EACA;KAAA;MAAA;UAAA;CnGk+ZJ;;AmG99ZA;;EAEI;EACA;EACA;EACA;CnGi+ZJ;;AmG99ZA;EACI;CnGi+ZJ;;AmG99ZA;EACI;CnGi+ZJ;;AmG59ZA;EACI;EACA;CnG+9ZJ;;AmG79ZI;EACI;CnGg+ZR;;AmG79ZI;EACI;CnGg+ZR;;AmG79ZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnGg+ZR;;AmG79ZI;EACI;EACA;EACA;CnGg+ZR;;AmG39ZA;EACI;CnG89ZJ;;AmG39ZA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CnG89ZJ;;AmG59ZI;EACI;EACA;EACA;EACA;EACA;KAAA;MAAA;UAAA;CnG+9ZR;;AmG79ZQ;EACI;CnGg+ZZ;;AmG19ZQ;EACI;CnG69ZZ;;AmGx9ZI;EACI;CnG29ZR;;AmGt9ZA;EACI;EACA;EACA;EACA;EACA;CnGy9ZJ;;AmGt9ZA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnGy9ZJ;;AmGt9ZA;EACI;CnGy9ZJ;;AmGt9ZA;EACI;IACI;IACA;IACA;GnGy9ZN;;EmGt9ZE;IACI;GnGy9ZN;;EmGp9ZM;IACI;IACA;IACA;IACA;GnGu9ZV;;EmGp9ZM;IACI;IACA;IACA;GnGu9ZV;;EmGp9ZM;IACI;IACA;IACA;IACA;IACA;GnGu9ZV;;EmGp9ZM;IACI;IACA;IACA;IACA;IACA;IACA;GnGu9ZV;;EmGr9ZU;IACI;GnGw9Zd;;EmGr9ZU;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GnGw9Zd;;EmGr9ZU;IACI;IACA;IACA;IACA;GnGw9Zd;;EmGr9ZU;IACI;GnGw9Zd;;EmGt9ZU;IACI;GnGy9Zd;;EmGr9ZO;IACG;GnGw9ZV;;EmGr9ZM;IACI;IACA;GnGw9ZV;CACF;;AoG51aA;EACI;EACA;EACA;EAAA;EAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CpG+1aJ;;AoG51aA;EACI;EACA;EACA;EACA;CpG+1aJ;;AoG51aA;EACI;EACA;EACA;EACA;EACA;CpG+1aJ;;AoG51aA;;;EAGI;EACA;EACA;EACA;EACA;EACA;EACA;CpG+1aJ;;AoG51aA;;EAEI;EACA;EACA;CpG+1aJ;;AoG51aA;EACI;CpG+1aJ;;AoG51aA;EACI;CpG+1aJ;;AoG51aA;EACI;CpG+1aJ;;AoG51aA;EACI;CpG+1aJ;;AoG51aA;EACI;CpG+1aJ;;AqGj6aA;;EACI;CrGq6aJ;;AqGl6aA;;EACI;CrGs6aJ;;AsGx6aA;EACI;EACA;EACA;CtG26aJ;;AsGt6aI;;;EACI;CtG26aR;;AsGx6aI;EACI;CtG26aR;;AsGp6aI;;;EACI;CtGy6aR;;AsGl6aI;;;EACI;CtGu6aR;;AsGp6aI;EACI;CtGu6aR;;AsGl6aA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CtGq6aJ;;AsGn6aI;EACI;EACA;CtGs6aR;;AsGl6aA;EACI;CtGq6aJ;;AsGl6aA;EAIQ;;;IACI;IACA;GtGo6aV;;EsGj6aM;IACI;GtGo6aV;CACF;;AuG5+aA;EACE;EACA;EACA;EACA;EACA;MAAA;CvG++aF;;AuG5+aA;EACE;CvG++aF;;AuG5+aA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;CvG++aF;;AuG5+aA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAKA;CvG++aF;;AuG5+aA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;CvG++aF;;AuG5+aA;EACE;IAAsC;GvGi/atC;;EuGh/aA;IAA0C;GvGq/a1C;CACF;;AuGp+aA;EACE;IAAK;IAAyB;GvG6gb9B;;EuG5gbA;IAAO;IAA2B;GvGihblC;CACF;;AwG9lbI;EACI;CxGimbR;;AwG9lbI;EACI;EACA;EACA;CxGimbR;;AwG9lbI;EACI;EACA;EACA;CxGimbR;;AwG9lbI;;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CxGimbR;;AwG9lbI;EACI;CxGimbR;;AwG9lbI;EACI;EACA;EACA;CxGimbR;;AwG7lbA;EACI;EACA;EACA;CxGgmbJ;;AwG7lbA;EACI;CxGgmbJ;;AwGvlbI;EACI;CxG0lbR;;AwGvlbI;EACI;EACA;EACA;EACA;EACA;EACA;CxG0lbR;;AwGvlbI;EACI;EACA;CxG0lbR;;AwGxlbQ;EACI;EACA;EACA;CxG2lbZ;;AwGxlbQ;EACI;EACA;CxG2lbZ;;AwGxlbQ;EAII;EACA;EACA;CxGwlbZ;;AwG7lbY;EACI;CxGgmbhB;;AwGxlbI;EACI;CxG2lbR;;AwGxlbI;EACI;EACA;EACA;EACA;EACA;EACA;CxG2lbR;;AwG/kbQ;EACI;CxGklbZ;;AwG/kbQ;EACI;EACA;EACA;CxGklbZ;;AwGhlbS;EACG;CxGmlbZ;;AwGjlbQ;EACI;CxGolbZ;;AwGhlbI;EACI;CxGmlbR;;AwG5kbA;EACI;CxG+kbJ;;AwG7kbI;EACI;EACA;EACA;EACA;CxGglbR;;AwG9kbQ;EACI;EACA;EACA;EACA;EACA;EACA;CxGilbZ;;AwG9kbQ;EACI;EACA;EACA;CxGilbZ;;AwG/kbY;EACI;EACA;EACA;CxGklbhB;;AwG/kbY;EACI;EACA;CxGklbhB;;AwG/kbY;EACI;EACA;EACA;CxGklbhB;;AwG/kbY;EACI;CxGklbhB;;AwG9kbQ;EACI;EACA;CxGilbZ;;AwG7kbI;EACI;EACA;EACA;EACA;EACA;EACA;CxGglbR;;AwGzkbA;EACI;CxG4kbJ;;AwGxkbQ;EAKI;EACA;CxGukbZ;;AwG5kbY;EACI;CxG+kbhB;;AwGvkbI;EACI;EACA;CxG0kbR;;AwGjkbI;EACI;CxGokbR;;AwGlkbQ;EACI;EACA;EACA;EAEA;EACA;CxGokbZ;;AwGjkbQ;EACI;CxGokbZ;;AwGnkbY;EACI;EACA;CxGskbhB;;AwGpkbY;EACI;EACA;EACA;CxGukbhB;;AwGpkbY;EACI;EACA;CxGukbhB;;AwGpkbY;EACI;CxGukbhB;;AwGlkbI;EACI;EACA;EACA;EACA;EACA;EACA;CxGqkbR;;AwG9jbA;EACI;CxGikbJ;;AwG/jbI;EACI;EACA;EACA;EACA;EACA;CxGkkbR;;AwGhkbQ;EACI;EACA;EACA;EACA;EACA;CxGmkbZ;;AwGhkbQ;EACI;CxGmkbZ;;AwGjkbY;EACI;EACA;EACA;EACA;CxGokbhB;;AwGjkbY;EACI;EACA;EACA;CxGokbhB;;AwGjkbY;EACI;EACA;CxGokbhB;;AwGjkbY;EACI;CxGokbhB;;AwG/jbI;EACI;EACA;EACA;EACA;EACA;EACA;CxGkkbR;;AwG/jbA;EACI;CxGkkbJ;;AyGn5bA;EACI;CzGs5bJ;;AyGp5bI;EACI;CzGu5bR;;AyGp5bI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CzGu5bR;;AyGr5bQ;EACI;EACA;CzGw5bZ;;AyGr5bQ;EACI;EACA;CzGw5bZ;;AyGr5bQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CzGw5bZ;;AyGt5bY;EACI;CzGy5bhB;;AyGt5bY;EACI;CzGy5bhB;;AyGt5bY;EACI;EACA;CzGy5bhB;;AyGr5bQ;EACI;CzGw5bZ;;AyGt5bY;EACI;CzGy5bhB;;AyGt5bY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CzGy5bhB;;AyGp5bY;EACI;CzGu5bhB;;AyGp5bY;EACI;EACA;CzGu5bhB;;AyGn5bQ;EACI;EACA;EACA;EACA;EACA;EACA;CzGs5bZ;;AyGp5bY;EACI;EACA;CzGu5bhB;;AyGn5bQ;EACI;CzGs5bZ;;AyGl5bI;EACI;EACA;EACA;EACA;CzGq5bR;;AyG/4bI;EACI;EACA;EACA;CzGk5bR;;AyGh5bQ;EACI;CzGm5bZ;;AyGh5bQ;EACI;EACA;CzGm5bZ;;AyGh5bQ;EACI;CzGm5bZ;;AyGh5bQ;EACI;CzGm5bZ;;AyG94bQ;EACI;EACA;CzGi5bZ;;AyG94bQ;EACI;CzGi5bZ;;AyG74bI;EACI;CzGg5bR;;AyG14bI;EACI;EACA;EACA;EACA;CzG64bR;;AyGz4bA;EACI;EACA;EACA;CzG44bJ;;AyG14bI;EACI;EACA;EACA;CzG64bR;;A0G7jcQ;;;EAGI;C1GgkcZ;;A0G5jcI;EACI;C1G+jcR;;A0G5jcI;EACI;C1G+jcR;;A2G/kcA;EACI;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2G/kcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C3GklcJ;;A2G/kcA;;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3GklcJ;;A2G/kcA;EACI;UAAA;EACA;UAAA;C3GklcJ;;A2G/kcA;EACI;UAAA;EACA;UAAA;C3GklcJ;;A2G/kcA;;EAEI;EACA;C3GklcJ;;A2G/kcA;;EAEI;C3GklcJ;;A2G/kcA;;;EAGI;EACA;EACA;C3GklcJ;;A2G/kcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2G/kcA;EACI;EACA;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2G/kcA;;;EAGI;EACA;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2GhlcA;;;EAGI;EACA;C3GmlcJ;;A2GhlcA;;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;C3GklcJ;;A2G/kcA;EACI;C3GklcJ;;A2GnlcA;EACI;C3GklcJ;;A2GnlcA;EACI;C3GklcJ;;A2GnlcA;EACI;C3GklcJ;;A2GnlcA;EACI;C3GklcJ;;A2G/kcA;;EAEI;C3GklcJ;;A2GhlcA;;EAEI;C3GmlcJ;;A2GjlcA;;EAEI;EACA;C3GolcJ;;A2GllcA;EACI;EACA;C3GqlcJ;;A2GnlcA;EACI;C3GslcJ;;A2GplcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C3GulcJ;;A2GrlcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3GwlcJ;;A2GtlcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3GylcJ;;A2GvlcA;EACI;EACA;EACA;C3G0lcJ;;A2GxlcA;;EAEI;C3G2lcJ;;A2GzlcA;;EAEI;C3G4lcJ;;A2G1lcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3G6lcJ;;A2G3lcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3G8lcJ;;A2G5lcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3G+lcJ;;A2G7lcA;EACI;EACA;EACA;EACA;C3GgmcJ;;A2G9lcA;EACI;C3GimcJ;;A2G/lcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3GkmcJ;;A2GhmcA;EACI;EACA;EACA;EACA;EACA;EACA;C3GmmcJ;;A2GjmcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C3GomcJ;;A2GlmcA;EACI;C3GqmcJ;;A2GnmcA;EACI;C3GsmcJ;;A2GpmcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3GumcJ;;A2GrmcA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C3GwmcJ;;A2GtmcA;EACI;EACA;EACA;C3GymcJ;;A2GvmcA;EACI;EACA;EACA;C3G0mcJ;;A2GxmcA;EACI;EACA;EACA;C3G2mcJ;;A2GzmcA;EACI;EACA;C3G4mcJ;;A2G1mcA;EACI;EACA;C3G6mcJ;;A2G3mcA;EACI;EACA;EACA;C3G8mcJ;;A2G3mcA;;EAEI;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;;EAEI;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;EACA;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;C3G8mcJ;;A2G3mcA;EACI;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;EACA;C3G8mcJ;;A2G3mcA;;EAEI;C3G8mcJ;;A2G3mcA;;EAEI;C3G8mcJ;;A2G3mcA;EACI;EACA;EACA;EACA;C3G8mcJ;;A2G3mcA;EACI;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;C3G8mcJ;;A2G3mcA;EACI;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;EACA;C3G8mcJ;;A2G3mcA;EACI;IACI;G3G8mcN;;E2G5mcE;IACI;G3G+mcN;CACF;;A2GrncA;EACI;IACI;G3G8mcN;;E2G5mcE;IACI;G3G+mcN;CACF;;A2G1mcI;EACI;EACA;EACA;C3G6mcR;;A2G3mcQ;EACI;EACA;EACA;EACA;C3G8mcZ;;A2G5mcY;EACI;EACA;C3G+mchB;;A2G3mcQ;EACI;EACA;C3G8mcZ;;A2G1mcI;EACI;EACA;C3G6mcR;;A2G1mcI;EACI;EACA;C3G6mcR;;A2G1mcY;EACI;C3G6mchB;;A2G1mcY;EACI;C3G6mchB;;A2GxmcI;EACI;EACA;C3G2mcR;;A4G7ldI;EACI;C5GgmdR;;A4G7ldI;EACI;EACA;EACA;C5GgmdR;;A4G9ldQ;EACI;EACA;C5GimdZ;;A4G/ldY;EACI;EACA;EACA;EACA;C5GkmdhB;;A4G9ldQ;EACI;EACA;EACA;EACA;C5GimdZ;;A4G/ldY;EACI;C5GkmdhB;;A4G7ldI;EACI;EACA;EACA;EACA;EACA;EACA;C5GgmdR;;A4G9ldQ;EACI;EACA;EACA;EACA;C5GimdZ;;A4G9ldQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C5GimdZ;;A4G9ldQ;EACI;EACA;EACA;C5GimdZ;;A4G/ldY;EACI;EACA;EACA;EACA;C5GkmdhB;;A4G/ldY;EACI;EACA;EACA;EACA;EACA;EACA;C5GkmdhB;;A4G9ldQ;EACI;C5GimdZ;;A4G9ldQ;EACI;EACA;C5GimdZ;;A6G7rdI;EACI;EACA;EACA;EACA;C7GgsdR;;A6G9rdQ;EACI;EACA;EACA;C7GisdZ;;A6G9rdQ;EACI;EACA;EACA;EACA;C7GisdZ;;A6G/rdY;EACI;C7GksdhB;;A6G5rdI;EACI;EACA;EACA;EACA;C7G+rdR;;A6G7rdQ;EACI;EACA;EACA;EACA;EACA;EACA;C7GgsdZ;;A6G9rdY;EACI;EACA;EACA;C7GisdhB;;A6G9rdY;EACI;EACA;EACA;C7GisdhB;;A6G7rdQ;EACI;C7GgsdZ;;A6G7rdQ;EACI;C7GgsdZ;;A8GzvdI;EACI;EACA;EACA;EACA;C9G4vdR;;A8GzvdI;EACI;EACA;EACA;C9G4vdR;;A8GzvdI;EACI;EACA;EACA;EACA;C9G4vdR;;A8G1vdQ;EACI;C9G6vdZ;;A8GzvdI;EACI;EACA;EACA;EACA;EACA;C9G4vdR;;A8G1vdQ;EACI;EACA;EACA;EACA;EACA;EACA;C9G6vdZ;;A8G3vdY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C9G8vdhB;;A8G1vdQ;EACI;C9G6vdZ;;A8G1vdQ;EACI;EACA;C9G6vdZ;;A8G1vdQ;EACI;EACA;EACA;EACA;EACA;C9G6vdZ;;A+G/zdA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/Gk0dJ;;A+Gh0dI;EACI;EACA;EACA;EACA;UAAA;C/Gm0dR;;A+Gh0dI;EACI;EACA;EACA;C/Gm0dR;;A+Gh0dI;EACI;EACA;EACA;EACA;C/Gm0dR;;A+Gh0dI;EACI;EACA;EACA;EACA;C/Gm0dR;;A+Gh0dI;EACI;EACA;EACA;EACA;C/Gm0dR;;A+Gh0dI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/Gm0dR;;A+G/zdQ;EACI;C/Gk0dZ;;A+G5zdA;EACI;EACA;C/G+zdJ;;A+G9zdI;EACI;C/Gi0dR;;A+G9zdI;EACE;IACE;G/Gi0dN;;E+G/zdI;IACE;G/Gk0dN;CACF;;A+Gx0dI;EACE;IACE;G/Gi0dN;;E+G/zdI;IACE;G/Gk0dN;CACF;;AgHl5dI;EACI;EACA;EACA;ChHq5dR;;AgHl5dI;EACI;EACA;EACA;ChHq5dR;;AgHl5dI;EACI;EAEA;ChHo5dR;;AgHj5dI;EACI;EACA;EACA;ChHo5dR;;AgH/4dA;EAIQ;IACI;GhH+4dV;;EgH74dU;IACI;GhHg5dd;CACF;;AiHn7dI;EACI;EACA;EACA;CjHs7dR;;AiHn7dI;EACI;EACA;EACA;CjHs7dR;;AiHn7dI;EACI;EAEA;CjHq7dR;;AiHl7dI;EACI;EACA;EACA;CjHq7dR;;AiHh7dA;EAIQ;IACI;GjHg7dV;;EiH96dU;IACI;GjHi7dd;CACF;;AkHp9dI;EACI;EACA;EACA;ClHu9dR;;AkHp9dI;EACI;EACA;EACA;ClHu9dR;;AkHp9dI;EACI;EACA;EACA;ClHu9dR;;AkHp9dI;EACI;EACA;EACA;ClHu9dR;;AkHl9dA;EAIQ;IACI;GlHk9dV;;EkHh9dU;IACI;GlHm9dd;CACF;;AmHv/dA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnH0/dJ;;AmHx/dI;EACI;EACA;EACA;EACA;EACA;CnH2/dR;;AmHz/dQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CnH4/dZ;;AmHz/dQ;EACI;EACA;EACA;CnH4/dZ;;AmHx/dI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnH2/dR;;AmHx/dI;EACI;CnH2/dR;;AmHx/dI;EACI;CnH2/dR;;AmHx/dI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CnH2/dR;;AmHr/dA;EAGQ;IACI;IACA;IACA;GnHs/dV;CACF;;AoHnkeA;EACI;CpHskeJ;;AoHjkeI;EACI;EACA;EACA;CpHokeR;;AoHjkeI;EACI;EACA;EACA;CpHokeR;;AoHjkeI;EACI;EACA;EACA;CpHokeR;;AoH9jeA;EAEI;IAkBI;GpH+ieN;;EoH/jeM;IACI;GpHkkeV;;EoHhkeU;IACI;GpHmked;;EoH9jeM;IACI;IACA;IACA;IACA;GpHikeV;CACF;;AqH5meI;EACI;EACA;EACA;EACA;EACA;CrH+meR;;AqH5meI;EACI;EACA;CrH+meR;;AqH5meI;EACI;EACA;CrH+meR;;AqH5meI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CrH+meR;;AqH5meI;EACI;EACA;EACA;CrH+meR;;AqH7meQ;EACI;CrHgneZ;;AqH3meA;EAIQ;IACI;GrH2meV;;EqHzmeU;IACI;GrH4med;CACF;;AsH5peI;EACI;CtH+peR;;AsH5peI;EACI;EACA;EACA;EACA;EACA;CtH+peR;;AsH5peI;EACI;EACA;EACA;CtH+peR;;AsH5peI;EACI;EACA;EACA;CtH+peR;;AsH7peQ;EACI;CtHgqeZ;;AsH5peI;EACI;EACA;CtH+peR;;AsHzpeA;EAIQ;IACI;GtHypeV;;EsHvpeU;IACI;GtH0ped;;EsHvpeU;IACI;GtH0ped;CACF;;AuH3seI;EACI;EACA;EACA;CvH8seR;;AuH3seI;EACI;EACA;EACA;CvH8seR;;AuH3seI;EACI;EACA;EACA;CvH8seR;;AuH3seI;EACI;EACA;EACA;CvH8seR;;AuHzseA;EAIQ;IACI;GvHyseV;;EuHvseU;IACI;GvH0sed;CACF;;AwH7ueI;EACI;EACA;EACA;CxHgveR;;AwH7ueI;EACI;EACA;EACA;CxHgveR;;AwH7ueI;EACI;EACA;EACA;CxHgveR;;AwH3ueA;EAMY;IACI;GxHyued;CACF;;AyH7veY;EACI;CzHgwehB;;AyHvveA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CzH0veJ;;AyHxveI;EACI;EACA;EACA;EACA;CzH2veR;;AyHxveI;EACI;EACA;EACA;EACA;EACA;CzH2veR;;AyHxveI;EACI;EACA;EACA;EACA;CzH2veR;;AyHxveI;;;EAGI;EACA;CzH2veR;;AyHvveA;EACI;EACA;CzH0veJ;;AyHxveA;EACI;CzH2veJ;;AyHxveA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CzH2veJ;;AyHzveI;EACI;EACA;EACA;EACA;EACA;CzH4veR;;AyHzveI;EACI;EACA;CzH4veR;;AyHxveA;EACI;CzH2veJ;;AyHzveI;EACI;EACA;CzH4veR;;AyHzveI;EACI;EACA;EACA;EACA;CzH4veR;;AyH1veQ;EACI;EACA;CzH6veZ;;AyH1veQ;EACI;EACA;CzH6veZ;;AyH1veQ;EACI;EACA;EACA;EACA;CzH6veZ;;AyH1veQ;EACI;EACA;EACA;EACA;EACA;EACA;CzH6veZ;;AyHxveA;EACI;CzH2veJ;;AyHzveI;EACI;EACA;EACA;EACA;EACA;EACA;CzH4veR;;AyH1veQ;EACI;EACA;EACA;EACA;CzH6veZ;;AyHtveA;EACI;EACA;CzHyveJ;;AyHvveI;EACI;EACA;EACA;CzH0veR;;AyHvveI;EACI;EACA;EACA;CzH0veR;;AyHvveI;EACI;EACA;CzH0veR;;AyHtveA;EACI;EACA;CzHyveJ;;AyHvveI;EACI;EACA;EACA;EACA;CzH0veR;;AyHtveA;EACI;IACI;GzHyveN;;EyHvveM;IACI;IACA;GzH0veV;;EyHvveM;IACI;IACA;IACA;GzH0veV;;EyHtveE;IACI;GzHyveN;CACF;;AyHtveA;EACI;IACI;GzHyveN;;EyHvveM;IACI;IACA;IACA;GzH0veV;;EyHvveM;IACI;IACA;IACA;GzH0veV;;EyHtveE;IACI;GzHyveN;;EyHvveM;IACI;IACA;IACA;IACA;GzH0veV;;EyHxveU;IACI;GzH2ved;;EyHxveU;IACI;GzH2ved;;EyHzveU;IACI;IACA;IACA;GzH4ved;CACF;;AyHtveA;EAEI;IAGI;IACA;GzHsveN;;EyHnveE;IAEI;GzHqveN;;EyHnveM;IACI;GzHsveV;;EyHlveE;IAEI;GzHoveN;;EyHlveM;IACI;IACA;IACA;GzHqveV;;EyHjveE;IACI;IACA;GzHoveN;;EyHjveE;IACI;IACA;GzHoveN;;EyHlveE;IACI;IACA;GzHqveN;;EyH9ueU;IACI;IACA;IACA;GzHived;;EyH9ueU;IACI;IACA;IACA;IACA;IACA;GzHived;;EyH9ueU;IACI;GzHived;;EyH/ueU;IACI;IACA;IACA;GzHkved;;EyHhvec;IACI;GzHmvelB;;EyH7ueE;IAEI;GzH+ueN;CACF;;AyHzueI;EACI;EACA;EACA;CzH4ueR;;AyHzueI;EACI;CzH4ueR;;AyHzueA;EAGQ;IACI;IACA;IACA;IACA;IACA;IACA;GzH0ueV;;EyHpueM;IACI;GzHuueV;;EyH/teU;IACI;GzHkued;;EyH7teU;IACI;IACA;GzHgued;CACF;;A0H1lfA;EACI;EACA;C1H6lfJ;;A0H3lfI;EACI;EACA;EACA;EACA;EACA;EACA;C1H8lfR;;A0H3lfI;EACI;EACA;EACA;EACA;C1H8lfR;;A0HxlfQ;EACI;EACA;EACA;EACA;EACA;EACA;C1H2lfZ;;A0HxlfQ;EACI;EACA;C1H2lfZ;;A0HxlfQ;EACI;EACA;EACA;C1H2lfZ;;A0H1lfY;EACI;C1H6lfhB;;A0HzlfQ;EACI;C1H4lfZ;;A0H1lfY;EACI;C1H6lfhB;;A0HzlfQ;EACI;EACA;C1H4lfZ;;A0H1lfY;EACI;C1H6lfhB;;A0HxlfI;EACI;C1H2lfR;;A0HzlfQ;EACI;C1H4lfZ;;A0HtlfY;EACI;C1HylfhB;;A0HrlfY;EAEI;C1HulfhB;;A0HplfY;EACI;C1HulfhB;;A0HjlfI;EACI;EACA;C1HolfR;;A0HllfQ;EACI;EACA;C1HqlfZ;;A0HjlfI;EACI;EACA;EACA;C1HolfR;;A0HllfQ;EACI;EACA;EACA;C1HqlfZ;;A0HllfQ;;EAEI;C1HqlfZ;;A0HjlfI;EACI;C1HolfR;;A0HnlfQ;EACI;EACA;C1HslfZ;;A0HllfI;EACI;IACI;G1HqlfV;;E0HjlfU;IACI;IACA;G1Holfd;CACF;;A0HhlfI;EACI;C1HmlfR;;A0HjlfQ;EACI;EACA;EACA;EACA;EACA;C1HolfZ;;A0HjlfQ;EACI;EACA;EACA;C1HolfZ;;A0HllfY;EACI;EACA;EACA;C1HqlfhB;;A2HjvfI;EACI;C3HovfR;;A2HjvfI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3HovfR;;A2HlvfQ;EACI;C3HqvfZ;;A2HjvfI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3HovfR;;A2HlvfQ;EACI;EACA;C3HqvfZ;;A2HlvfQ;EACI;EACA;EACA;EACA;EACA;C3HqvfZ;;A2HjvfI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3HovfR;;A2HjvfI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3HovfR;;A2HjvfI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3HovfR;;A2HjvfI;EACI;C3HovfR;;A2HjvfI;EACI;C3HovfR;;A2HlvfQ;EACI;C3HqvfZ;;A2HjvfI;EACI;C3HovfR;;A2HjvfI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C3HovfR;;A2HjvfI;EACI;C3HovfR;;A2HlvfQ;EACI;C3HqvfZ;;A2HjvfI;EACI;C3HovfR;;A2HjvfI;EAEI;IACI;G3HmvfV;;E2HhvfM;IAEI;G3HkvfV;;E2H/ufM;IACI;IACA;G3HkvfV;;E2H/ufM;IACI;G3HkvfV;CACF;;A2H9ufI;EAEI;IACI;IACA;G3HgvfV;;E2H7ufM;IACG;G3HgvfT;;E2H7ufM;IACI;IACA;G3HgvfV;;E2H7ufM;IACI;IACA;G3HgvfV;CACF;;A2H3ufI;EAEI;IACI;G3H6ufV;;E2H1ufM;IACI;IACA;IACA;IACA;G3H6ufV;;E2H1ufM;IACI;G3H6ufV;CACF;;A4Hv6fA;EAEI;C5Hy6fJ;;A4Hv6fI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C5H06fR;;A4Hv6fI;EACI;EACA;EACA;C5H06fR;;A4Hv6fI;EACI;EACA;EACA;C5H06fR;;A4Hr6fA;EACI;EACA;C5Hw6fJ;;A4Ht6fI;EACI;C5Hy6fR;;A6H58fI;EACI;C7H+8fR;;A6H58fI;EACI;C7H+8fR;;A6H58fI;EACI;EAA0B;C7Hg9flC;;A6H78fI;EAGQ;IACI;IACA;G7H88fd;;E6H58fc;IACI;G7H+8flB;;E6Hv8fU;IACI;G7H08fd;CACF;;A8Hv+fA;EACE;C9H0+fF;;A8Hx+fE;EACE;EACA;C9H2+fJ;;A8Hz+fI;EACE;EACA;EACA;EACA;EACA;C9H4+fN;;A8H1+fM;EACE;EACA;EACA;C9H6+fR;;A8Hz+fI;EACE;EACA;EACA;C9H4+fN;;A8Hz+fI;EACE;EACA;C9H4+fN;;A8H1+fM;EACE;C9H6+fR;;A8Hv+fI;EACE;EACA;C9H0+fN;;A8Hv+fI;EACE;C9H0+fN;;A8Hx+fM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C9H2+fR;;A8Hx+fM;EACE;EACA;EACA;EACA;EACA;C9H2+fR;;A8Hv+fI;EACE;EACA;EACA;EACA;EACA;C9H0+fN;;A8Hr+fI;EACE;C9Hw+fN;;A8Hn+fI;EACE;C9Hs+fN;;A8Hh+fI;EACE;EACA;EACA;EACA;EACA;EACA;C9Hm+fN;;A8H99fI;EACE;EACA;C9Hi+fN;;A8H59fI;EACE;EACA;C9H+9fN;;A8H19fI;;EAEE;EACA;EACA;EACA;EACA;EACA;C9H69fN;;A8H19fI;EACE;C9H69fN;;A8H19fI;EACE;EACA;C9H69fN;;A8H19fI;EACE;EACA;EACA;C9H69fN;;A8H39fM;EACE;EACA;EACA;EACA;EACA;C9H89fR;;A8H59fQ;EACE;C9H+9fV;;A8H19fI;EACE;EACA;EACA;C9H69fN;;A8H19fI;EACE;EACA;EACA;C9H69fN;;A8H39fM;EACE;EACA;EACA;C9H89fR;;A8H39fM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C9H89fR;;A8H39fM;EACE;EACA;C9H89fR;;A8H39fM;EACE;EACA;C9H89fR;;A8H39fM;EACE;EACA;C9H89fR;;A8H39fM;EACE;EACA;C9H89fR;;A8Hz9fE;EACE;EACA;EACA;C9H49fJ;;A8Hz9fE;EACE;C9H49fJ;;A8Hz9fE;EACE;EACA;C9H49fJ;;A8Hz9fE;EACE;EACA;C9H49fJ;;A8Hz9fE;EACE;EACA;EACA;EACA;EACA;C9H49fJ;;A8Hz9fE;EACE;EACA;EACA;EACA;EACA;EACA;C9H49fJ;;A8Hz9fE;EACE;EACA;C9H49fJ;;A8H19fI;EACE;EACA;EACA;C9H69fN;;A8Hz9fE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C9H49fJ;;A8Hx9fA;EAGM;IACE;G9Hy9fN;;E8Ht9fI;IACE;G9Hy9fN;;E8Ht9fI;IACE;G9Hy9fN;;E8Hp9fI;IACE;IACA;IACA;IACA;G9Hu9fN;;E8Hl9fI;IACE;IACA;G9Hq9fN;;E8H98fQ;IACE;IACA;G9Hi9fV;;E8H38fE;IACE;IACA;G9H88fJ;CACF;;A+H/vgBA;EACI;C/HkwgBJ;;A+HhwgBI;EACI;C/HmwgBR;;A+HjwgBQ;EACI;EACA;C/HowgBZ;;A+H/vgBY;EACI;C/HkwgBhB;;A+H5vgBY;EACI;C/H+vgBhB;;A+HzvgBI;EACI;C/H4vgBR;;A+HzvgBI;EACI;EACA;EACA;EACA;C/H4vgBR;;A+H1vgBQ;EACI;EACA;EACA;C/H6vgBZ;;A+HxvgBI;EACI;EACA;C/H2vgBR;;A+HzvgBQ;EACI;EACA;EACA;EACA;C/H4vgBZ;;A+HzvgBQ;EACI;EACA;EACA;C/H4vgBZ;;A+H1vgBY;EACI;EACA;EACA;EACA;EACA;EACA;C/H6vgBhB;;A+HxvgBI;EACI;EACA;C/H2vgBR;;A+HzvgBQ;EACI;C/H4vgBZ;;A+HzvgBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C/H4vgBZ;;A+HxvgBI;EACI;C/H2vgBR;;A+HzvgBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/H4vgBZ;;A+H1vgBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/H6vgBhB;;A+H1vgBY;EACI;EACA;C/H6vgBhB;;A+HxvgBI;EACI;EACA;C/H2vgBR;;A+HxvgBI;EACI;C/H2vgBR;;A+HxvgBI;EACI;EACA;C/H2vgBR;;A+HzvgBQ;EACI;C/H4vgBZ;;A+H1vgBY;EACI;EACA;EACA;EACA;EACA;EACA;C/H6vgBhB;;A+HxvgBI;EACI;EACA;C/H2vgBR;;A+HzvgBQ;EACI;EACA;C/H4vgBZ;;A+H1vgBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/H6vgBhB;;A+HzvgBY;EACI;C/H4vgBhB;;A+HzvgBY;EACI;C/H4vgBhB;;A+HzvgBY;EACI;EACA;C/H4vgBhB;;A+HzvgBY;EACI;EACA;C/H4vgBhB;;A+HtvgBY;EACI;C/HyvgBhB;;A+HtvgBY;EACI;C/HyvgBhB;;A+HtvgBY;EACI;EACA;EACA;EACA;C/HyvgBhB;;A+HvvgBgB;EACI;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;C/H0vgBpB;;A+HvvgBgB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;C/H0vgBpB;;A+HvvgBgB;EACI;C/H0vgBpB;;A+HvvgBgB;EACI;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;C/H0vgBpB;;A+HvvgBgB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;EACA;EACA;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;EACA;EACA;EACA;C/H0vgBpB;;A+HvvgBgB;EACI;C/H0vgBpB;;A+HnvgBI;EACI;EACA;EACA;EACA;C/HsvgBR;;A+HpvgBQ;EACI;C/HuvgBZ;;A+HpvgBQ;EACI;C/HuvgBZ;;A+HnvgBI;EACI;C/HsvgBR;;A+HlvgBQ;;;EAGI;EACA;EACA;C/HqvgBZ;;A+HjvgBQ;EACI;C/HovgBZ;;A+HjvgBQ;;EAEI;EACA;EACA;C/HovgBZ;;A+HjvgBS;EAEG;EACA;EACA;C/HmvgBZ;;A+HjvgBU;EACE;EACA;EACA;EACA;C/HovgBZ;;A+HjvgBQ;EACI;EACA;EACA;EACA;C/HovgBZ;;A+HjvgBQ;EACE;EACA;C/HovgBV;;A+HhvgBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C/HmvgBR;;A+HjvgBQ;EACI;C/HovgBZ;;A+HlvgBQ;EACI;C/HqvgBZ;;A+HjvgBI;EACI;EACA;EACA;C/HovgBR;;A+HlvgBQ;EACI;EACA;EACA;EACA;C/HqvgBZ;;A+HlvgBQ;EACI;C/HqvgBZ;;A+HlvgBQ;EACI;EACA;C/HqvgBZ;;A+HlvgBQ;EACI;EACA;EACA;C/HqvgBZ;;A+HnvgBY;EACI;EACA;EACA;EACA;EACA;C/HsvgBhB;;A+HlvgBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C/HqvgBZ;;A+HnvgBY;EACI;C/HsvgBhB;;A+HnvgBY;EACI;EACA;EACA;EACA;EACA;C/HsvgBhB;;A+HpvgBgB;EACI;EACA;EACA;EACA;EACA;C/HuvgBpB;;A+HpvgBgB;EACI;EACA;EACA;EACA;EACA;C/HuvgBpB;;A+HpvgBgB;EACI;C/HuvgBpB;;A+HpvgBgB;EACI;C/HuvgBpB;;A+HpvgBgB;EACI;EACA;C/HuvgBpB;;A+HnvgBY;EACI;EACA;EACA;C/HsvgBhB;;A+HnvgBY;EACI;EACA;EACA;EACA;EACA;C/HsvgBhB;;A+H/ugBQ;EACI;EACA;EACA;C/HkvgBZ;;A+H/ugBQ;EACI;EACA;EACA;EACA;C/HkvgBZ;;A+H/ugBY;EASI;EACA;EACA;EACA;EACA;C/H0ugBhB;;A+HrvgBgB;EACI;EACA;EACA;EACA;C/HwvgBpB;;A+H5vgBgB;EACI;EACA;EACA;EACA;C/HwvgBpB;;A+H5vgBgB;EACI;EACA;EACA;EACA;C/HwvgBpB;;A+H5vgBgB;EACI;EACA;EACA;EACA;C/HwvgBpB;;A+H5vgBgB;EACI;EACA;EACA;EACA;C/HwvgBpB;;A+H7ugBQ;EACI;EACA;EACA;EACA;C/HgvgBZ;;A+H5ugBY;EACI;EACA;C/H+ugBhB;;A+H1ugBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C/H6ugBR;;A+H3ugBQ;EACI;C/H8ugBZ;;A+H1ugBI;EACI;EACA;C/H6ugBR;;A+HzugBI;EAEI;IACI;G/H2ugBV;;E+HzugBU;IACI;IACA;IACA;IACA;IACA;G/H4ugBd;;E+HvugBM;IACI;G/H0ugBV;;E+HvugBM;IACI;G/H0ugBV;;E+HvugBM;IACI;IAIA;IACA;IACA;G/H0ugBV;;E+HxugBU;IACI;G/H2ugBd;;E+HrugBU;IACI;IACA;IACA;G/HwugBd;;E+HnugBM;IACI;IACA;IACA;IACA;G/HsugBV;;E+HpugBU;IACI;IACA;IACA;G/HuugBd;;E+HpugBU;IACI;IACA;G/HuugBd;CACF;;AgIz0hBA;EACI;ChI40hBJ;;AgI10hBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ChI60hBR;;AgI10hBI;EACI;ChI60hBR;;AgI10hBI;EACI;EACA;EACA;EACA;EACA;EACA;ChI60hBR;;AgI30hBQ;EACI;ChI80hBZ;;AgI30hBQ;EACG;EACA;ChI80hBX;;AgI30hBQ;EACI;ChI80hBZ;;AgIz0hBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ChI40hBhB;;AgIz0hBY;EACI;EACA;EACA;EACA;EACA;EACA;ChI40hBhB;;AgIz0hBY;EACI;EACA;EACA;EACA;EACA;EACA;ChI40hBhB;;AgIr0hBY;EACI;EACA;EACA;EACA;EACA;EACA;ChIw0hBhB;;AgIr0hBY;EACI;EACA;EACA;EACA;EACA;EACA;ChIw0hBhB;;AgIj0hBI;EACI;EACA;EACA;EACA;ChIo0hBR;;AgIj0hBI;EAEI;EACA;EACA;EACA;EACA;EACA;ChIm0hBR;;AgIj0hBQ;EACI;EACA;EACA;EACA;EACA;ChIo0hBZ;;AgI/zhBI;EACI;EACA;ChIk0hBR;;AgI/zhBI;EACI;EACA;EACA;EACA;EACA;ChIk0hBR;;AgI/zhBI;EACI;EACA;EACA;ChIk0hBR;;AgI7zhBQ;;EACI;EACA;EACA;ChIi0hBZ;;AgI5zhBI;EACI;ChI+zhBR;;AgI7zhBQ;EACI;EACA;EACA;ChIg0hBZ;;AgI7zhBQ;EAEI;EACA;EACA;ChI+zhBZ;;AgI7zhBY;EACI;ChIg0hBhB;;AgI3zhBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ChI8zhBZ;;AgI3zhBQ;EACI;ChI8zhBZ;;AgI3zhBQ;EACI;EACA;EACA;EACA;ChI8zhBZ;;AgInzhBgB;EACI;EACA;EACA;EACA;ChIszhBpB;;AgI7yhBI;EACI;ChIgzhBR;;AgI7yhBI;EACI;ChIgzhBR;;AgI3yhBA;EAEI;IACI;GhI6yhBN;;EgI1yhBE;IACI;IACA;GhI6yhBN;CACF;;AiIvhiBI;EAEI;EACA;CjIyhiBR;;AiIvhiBQ;EACI;EACA;EACA;CjI0hiBZ;;AiIvhiBQ;EACI;EACA;EACA;EACA;CjI0hiBZ;;AiIthiBI;EACI;EACA;CjIyhiBR;;AiIthiBI;;EACI;EACA;CjI0hiBR;;AiIvhiBI;EACI;EACA;EACA;EACA;CjI0hiBR;;AiIzhiBQ;EACI;CjI4hiBZ;;AiI1hiBQ;EACI;CjI6hiBZ;;AiIzhiBI;EACI;CjI4hiBR;;AiIzhiBI;EACI;EACA;EACA;CjI4hiBR;;AiIzhiBI;EACI;IACI;GjI4hiBV;;EiIzhiBM;IACI;GjI4hiBV;;EiIzhiBM;;;;IAII;IACA;GjI4hiBV;CACF;;AiIzhiBI;EACI;IACI;IAIA;IACA;IACA;GjI4hiBV;;EiI1hiBU;IACI;GjI6hiBd;CACF;;AkIjniBA;EACI;ClIoniBJ;;AkIlniBI;EACI;ClIqniBR;;AkInniBQ;EACI;EACA;ClIsniBZ;;AkIjniBY;EACI;ClIoniBhB;;AkI9miBY;EACI;ClIiniBhB;;AkI5miBI;EACI;ClI+miBR;;AkI5miBI;EACI;EACA;EACA;EACA;ClI+miBR;;AkI7miBQ;EACI;EACA;EACA;ClIgniBZ;;AkI3miBI;EACI;EACA;ClI8miBR;;AkI5miBQ;EACI;EACA;EACA;EACA;ClI+miBZ;;AkI5miBQ;EACI;EACA;EACA;ClI+miBZ;;AkI7miBY;EACI;EACA;EACA;EACA;EACA;EACA;ClIgniBhB;;AkI3miBI;EACI;EACA;ClI8miBR;;AkI5miBQ;EACI;ClI+miBZ;;AkI5miBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ClI+miBZ;;AkI3miBI;EACI;ClI8miBR;;AkI5miBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClI+miBZ;;AkI7miBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClIgniBhB;;AkI7miBY;EACI;EACA;ClIgniBhB;;AkI3miBI;EACI;EACA;ClI8miBR;;AkI3miBI;EACI;ClI8miBR;;AkI3miBI;EACI;EACA;ClI8miBR;;AkI5miBQ;EACI;ClI+miBZ;;AkI7miBY;EACI;EACA;EACA;EACA;EACA;EACA;ClIgniBhB;;AkI3miBI;EACI;EACA;ClI8miBR;;AkI5miBQ;EACI;EACA;ClI+miBZ;;AkI7miBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClIgniBhB;;AkI5miBY;EACI;ClI+miBhB;;AkI5miBY;EACI;ClI+miBhB;;AkI5miBY;EACI;EACA;ClI+miBhB;;AkI5miBY;EACI;EACA;ClI+miBhB;;AkIzmiBY;EACI;ClI4miBhB;;AkIzmiBY;EACI;ClI4miBhB;;AkIzmiBY;EACI;EACA;EACA;EACA;ClI4miBhB;;AkI1miBgB;EACI;EACA;EACA;ClI6miBpB;;AkI1miBgB;EACI;ClI6miBpB;;AkI1miBgB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ClI6miBpB;;AkI1miBgB;EACI;ClI6miBpB;;AkI1miBgB;EACI;ClI6miBpB;;AkI1miBgB;EACI;EACA;EACA;ClI6miBpB;;AkI1miBgB;EACI;EACA;ClI6miBpB;;AkI1miBgB;EACI;ClI6miBpB;;AkI1miBgB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClI6miBpB;;AkI1miBgB;EACI;EACA;EACA;EACA;EACA;ClI6miBpB;;AkI1miBgB;;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;ClI6miBpB;;AkI1miBgB;EACI;EACA;EACA;EACA;ClI6miBpB;;AkI1miBgB;EACI;ClI6miBpB;;AkItmiBI;EACI;EACA;EACA;EACA;ClIymiBR;;AkIvmiBQ;EACI;ClI0miBZ;;AkIvmiBQ;EACI;ClI0miBZ;;AkItmiBI;EACI;ClIymiBR;;AkIrmiBQ;;;EAGI;EACA;EACA;ClIwmiBZ;;AkIpmiBQ;EACI;ClIumiBZ;;AkIpmiBQ;;EAEI;EACA;EACA;ClIumiBZ;;AkIpmiBS;EAEG;EACA;EACA;ClIsmiBZ;;AkIpmiBU;EACE;EACA;EACA;EACA;ClIumiBZ;;AkIpmiBQ;EACI;EACA;EACA;EACA;ClIumiBZ;;AkIpmiBQ;EACE;EACA;ClIumiBV;;AkInmiBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ClIsmiBR;;AkIpmiBQ;EACI;ClIumiBZ;;AkIrmiBQ;EACI;ClIwmiBZ;;AkIpmiBI;EACI;EACA;EACA;ClIumiBR;;AkIrmiBQ;EACI;EACA;EACA;EACA;ClIwmiBZ;;AkIrmiBQ;EACI;ClIwmiBZ;;AkIrmiBQ;EACI;EACA;ClIwmiBZ;;AkIrmiBQ;EACI;EACA;EACA;ClIwmiBZ;;AkItmiBY;EACI;EACA;EACA;EACA;EACA;ClIymiBhB;;AkIrmiBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ClIwmiBZ;;AkItmiBY;EACI;ClIymiBhB;;AkItmiBY;EACI;EACA;EACA;EACA;EACA;ClIymiBhB;;AkIvmiBgB;EACI;EACA;EACA;EACA;EACA;ClI0miBpB;;AkIvmiBgB;EACI;EACA;EACA;EACA;EACA;ClI0miBpB;;AkIvmiBgB;EACI;ClI0miBpB;;AkIvmiBgB;EACI;ClI0miBpB;;AkIvmiBgB;EACI;EACA;ClI0miBpB;;AkIrmiBY;EACI;EACA;EACA;ClIwmiBhB;;AkIrmiBY;EACI;EACA;EACA;EACA;EACA;ClIwmiBhB;;AkIjmiBQ;EACI;EACA;EACA;ClIomiBZ;;AkIjmiBQ;EACI;EACA;EACA;EACA;ClIomiBZ;;AkIlmiBY;EASI;EACA;EACA;EACA;ClI6liBhB;;AkIvmiBgB;EACI;EACA;EACA;EACA;ClI0miBpB;;AkI9miBgB;EACI;EACA;EACA;EACA;ClI0miBpB;;AkI9miBgB;EACI;EACA;EACA;EACA;ClI0miBpB;;AkI9miBgB;EACI;EACA;EACA;EACA;ClI0miBpB;;AkI9miBgB;EACI;EACA;EACA;EACA;ClI0miBpB;;AkIhmiBQ;EACI;EACA;EACA;EACA;ClImmiBZ;;AkIhmiBY;EACI;EACA;ClImmiBhB;;AkI9liBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;ClIimiBR;;AkIhmiBQ;EACI;ClImmiBZ;;AkIhmiBI;EACI;EACA;ClImmiBR;;AkI/liBI;EACI;IACI;GlIkmiBV;;EkIhmiBU;IACI;IACA;IACA;IACA;IACA;GlImmiBd;;EkI9liBM;IACI;GlIimiBV;;EkI9liBM;IACI;GlIimiBV;;EkI9liBM;IACI;IAIA;IACA;IACA;GlIimiBV;;EkI/liBU;IACI;GlIkmiBd;;EkI5liBU;IACI;IACA;IACA;GlI+liBd;;EkI1liBM;IACI;IACA;IACA;IACA;GlI6liBV;;EkI3liBU;IACI;IACA;IACA;GlI8liBd;;EkI3liBU;IACI;IACA;GlI8liBd;CACF;;AmIxrjBI;EAEI;EACA;CnI0rjBR;;AmIxrjBQ;EACI;EACA;EACA;CnI2rjBZ;;AmIxrjBQ;EACI;EACA;EACA;EACA;CnI2rjBZ;;AmIvrjBI;EACI;EACA;CnI0rjBR;;AmIvrjBI;EACI;EACA;CnI0rjBR;;AmIvrjBI;EACI;EACA;CnI0rjBR;;AmIvrjBI;EACI;EACA;EACA;EACA;CnI0rjBR;;AmIzrjBQ;EACI;CnI4rjBZ;;AmI1rjBQ;EACI;CnI6rjBZ;;AmIzrjBI;EACI;CnI4rjBR;;AmIzrjBI;EACI;EACA;EACA;CnI4rjBR;;AmIzrjBI;EACI;IACI;GnI4rjBV;;EmIzrjBM;IACI;GnI4rjBV;;EmIzrjBM;;;;IAII;IACA;GnI4rjBV;CACF;;AmIzrjBI;EACI;IACI;IAIA;IACA;IACA;GnI4rjBV;;EmI1rjBU;IACI;GnI6rjBd;CACF;;AoItxjBA;EACI;CpIyxjBJ;;AoIvxjBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CpI0xjBR;;AoIvxjBI;EACI;CpI0xjBR;;AoIvxjBI;EACI;EACA;EACA;EACA;EACA;EACA;CpI0xjBR;;AoIxxjBQ;EACI;CpI2xjBZ;;AoIxxjBQ;EACI;EACA;CpI2xjBZ;;AoIxxjBQ;EACI;CpI2xjBZ;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;EACA;EACA;CpIyxjBhB;;AoItxjBY;EACI;EACA;EACA;EACA;EACA;EACA;CpIyxjBhB;;AoInxjBY;EACI;EACA;EACA;EACA;EACA;EACA;CpIsxjBhB;;AoInxjBY;EACI;EACA;EACA;EACA;EACA;EACA;CpIsxjBhB;;AoIjxjBI;EACI;EACA;EACA;EACA;CpIoxjBR;;AoIjxjBI;EACI;EACA;EACA;EACA;EACA;EACA;CpIoxjBR;;AoIlxjBQ;EACI;EACA;EACA;EACA;EACA;CpIqxjBZ;;AoIjxjBI;EACI;EACA;CpIoxjBR;;AoIjxjBI;EACI;EACA;EACA;EACA;EACA;CpIoxjBR;;AoIjxjBI;EACI;EACA;EACA;CpIoxjBR;;AoI/wjBQ;;EACI;EACA;CpImxjBZ;;AoI/wjBI;EACI;CpIkxjBR;;AoIhxjBQ;EACI;EACA;EACA;CpImxjBZ;;AoIhxjBQ;EACI;EACA;EACA;CpImxjBZ;;AoIjxjBY;EACI;CpIoxjBhB;;AoIhxjBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CpImxjBZ;;AoIhxjBQ;EACI;CpImxjBZ;;AoIhxjBQ;EACI;EACA;EACA;EACA;CpImxjBZ;;AoI5wjBgB;EACI;EACA;EACA;EACA;CpI+wjBpB;;AoIzwjBI;EACI;CpI4wjBR;;AoIzwjBI;EACI;CpI4wjBR;;AoIxwjBA;EACI;IACI;GpI2wjBN;;EoIxwjBE;IACI;IACA;GpI2wjBN;CACF;;AqIhhkBI;EACI;CrImhkBR;;AqIjhkBQ;EACI;EACA;EACA;CrIohkBZ;;AqI/gkBI;EACI;EACA;CrIkhkBR;;AqIhhkBQ;EACI;EACA;EACA;CrImhkBZ;;AqI7gkBA;EAIQ;IACI;IAIA;IACA;IACA;GrI6gkBV;;EqI3gkBU;IACI;GrI8gkBd;;EqIzgkBM;IACI;GrI4gkBV;;EqIzgkBM;IACI;GrI4gkBV;;EqIzgkBM;IACI;GrI4gkBV;;EqIzgkBM;IACI;IACA;GrI4gkBV;CACF;;AsI5kkBA;EAIQ;IACI;IAIA;IACA;IACA;GtI4kkBV;;EsI1kkBU;IACI;GtI6kkBd;;EsIxkkBM;IACI;GtI2kkBV;;EsIxkkBM;IACI;GtI2kkBV;CACF;;AsIrkkBI;EACI;CtIwkkBR;;AsIrkkBI;EACI;CtIwkkBR;;AsItkkBQ;EACI;EACA;EACA;CtIykkBZ;;AsInkkBA;EAIQ;;IACI;IAIA;IACA;IACA;GtIokkBV;;EsIlkkBU;;IACI;GtIskkBd;;EsIjkkBM;;IACI;GtIqkkBV;;EsIlkkBM;;IACI;GtIskkBV;CACF;;A8H9okBA;EACE;C9HipkBF;;A8H/okBE;EACE;EACA;C9HkpkBJ;;A8HhpkBI;EACE;EACA;EACA;EACA;EACA;C9HmpkBN;;A8HjpkBM;EACE;EACA;EACA;C9HopkBR;;A8HhpkBI;EACE;EACA;EACA;C9HmpkBN;;A8HhpkBI;EACE;EACA;C9HmpkBN;;A8HjpkBM;EACE;C9HopkBR;;A8H9okBI;EACE;EACA;C9HipkBN;;A8H9okBI;EACE;C9HipkBN;;A8H/okBM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C9HkpkBR;;A8H/okBM;EACE;EACA;EACA;EACA;EACA;C9HkpkBR;;A8H9okBI;EACE;EACA;EACA;EACA;EACA;C9HipkBN;;A8H5okBI;EACE;C9H+okBN;;A8H1okBI;EACE;C9H6okBN;;A8HvokBI;EACE;EACA;EACA;EACA;EACA;EACA;C9H0okBN;;A8HrokBI;EACE;EACA;C9HwokBN;;A8HnokBI;EACE;EACA;C9HsokBN;;A8HjokBI;;EAEE;EACA;EACA;EACA;EACA;EACA;C9HookBN;;A8HjokBI;EACE;C9HookBN;;A8HjokBI;EACE;EACA;C9HookBN;;A8HjokBI;EACE;EACA;EACA;C9HookBN;;A8HlokBM;EACE;EACA;EACA;EACA;EACA;C9HqokBR;;A8HnokBQ;EACE;C9HsokBV;;A8HjokBI;EACE;EACA;EACA;C9HookBN;;A8HjokBI;EACE;EACA;EACA;C9HookBN;;A8HlokBM;EACE;EACA;EACA;C9HqokBR;;A8HlokBM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C9HqokBR;;A8HlokBM;EACE;EACA;C9HqokBR;;A8HlokBM;EACE;EACA;C9HqokBR;;A8HlokBM;EACE;EACA;C9HqokBR;;A8HlokBM;EACE;EACA;C9HqokBR;;A8HhokBE;EACE;EACA;EACA;C9HmokBJ;;A8HhokBE;EACE;C9HmokBJ;;A8HhokBE;EACE;EACA;C9HmokBJ;;A8HhokBE;EACE;EACA;C9HmokBJ;;A8HhokBE;EACE;EACA;EACA;EACA;EACA;C9HmokBJ;;A8HhokBE;EACE;EACA;EACA;EACA;EACA;EACA;C9HmokBJ;;A8HhokBE;EACE;EACA;C9HmokBJ;;A8HjokBI;EACE;EACA;EACA;C9HookBN;;A8HhokBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;C9HmokBJ;;A8H/nkBA;EAGM;IACE;G9HgokBN;;E8H7nkBI;IACE;G9HgokBN;;E8H7nkBI;IACE;G9HgokBN;;E8H3nkBI;IACE;IACA;IACA;IACA;G9H8nkBN;;E8HznkBI;IACE;IACA;G9H4nkBN;;E8HrnkBQ;IACE;IACA;G9HwnkBV;;E8HlnkBE;IACE;IACA;G9HqnkBJ;CACF;;AuIp6kBI;EACI;CvIu6kBR;;AuIp6kBI;EACI;EACA;CvIu6kBR;;AuIp6kBI;EACI;CvIu6kBR;;AuIp6kBI;EACI;EACA;EACA;CvIu6kBR;;AuIp6kBI;EACI;EACA;EACA;EACA;EACA;CvIu6kBR;;AuIp6kBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CvIu6kBR;;AuIp6kBI;EACI;EACA;EACA;EACA;CvIu6kBR;;AuIp6kBI;EACI;EACA;EACA;EACA;EACA;EACA;CvIu6kBR;;AuIp6kBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CvIu6kBR;;AuIr6kBQ;EACI;EACA;EACA;EACA;EACA;CvIw6kBZ;;AuIr6kBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;CvIw6kBZ;;AuIt6kBY;EACI;EACA;EACA;EACA;EACA;CvIy6kBhB;;AuIt6kBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CvIy6kBhB;;AuIv6kBgB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CvI06kBpB;;AuIp6kBI;EACI;EACA;CvIu6kBR;;AuIr6kBQ;EACI;EACA;EACA;EACA;CvIw6kBZ;;AuIp6kBI;EACI;EACA;EACA;EACA;CvIu6kBR;;AuIr6kBQ;;EAEI;EACA;CvIw6kBZ;;AuIr6kBQ;EACI;EACA;EACA;CvIw6kBZ;;AuIp6kBI;;EAEI;EACA;EACA;EACA;EACA;EACA;CvIu6kBR;;AuIp6kBI;EACI;CvIu6kBR;;AwIpklBI;EACI;CxIuklBR;;AwInklBI;EACI;EACA;EACA;EACA;CxIsklBR;;AwInklBI;EACI;CxIsklBR;;AwInklBI;EACI;EACA;CxIsklBR;;AwInklBI;EACI;CxIsklBR;;AwInklBI;EACI;CxIsklBR;;AwInklBI;EACI;CxIsklBR;;AwInklBI;EACI;EACA;EACA;CxIsklBR;;AwInklBI;EACI;EACA;EACA;CxIsklBR;;AwIjklBA;EAIQ;IACI;GxIiklBV;;EwI9jlBM;IACI;GxIiklBV;;EwI9jlBM;IACI;GxIiklBV;;EwI9jlBM;IACI;IACA;IACA;GxIiklBV;;EwI9jlBM;IACI;IACA;IACA;GxIiklBV;;EwI9jlBM;IACI;GxIiklBV;;EwI9jlBM;IACI;GxIiklBV;;EwI5jlBU;IACI;GxI+jlBd;;EwI7jlBc;IACI;GxIgklBlB;CACF;;AyI1plBI;EACI;EACA;EACA;EACA;EACA;EACA;CzI6plBR;;AyI1plBI;EACI;EACA;EACA;EACA;EACA;CzI6plBR;;AyI1plBI;EACI;EACA;CzI6plBR;;AyI1plBI;EACI;EACA;EACA;EACA;CzI6plBR;;AyI1plBI;EACI;EACA;CzI6plBR;;AyI1plBI;EACI;CzI6plBR;;AyI1plBI;EACI;CzI6plBR;;AyI3plBQ;EACI;EACA;EACA;CzI8plBZ;;AyIvplBA;EAIQ;IACI;IAIA;IACA;IACA;GzIuplBV;;EyIrplBU;IACI;GzIwplBd;;EyI/olBM;IACI;IAIA;IACA;IACA;GzIkplBV;;EyIhplBU;IACI;GzImplBd;;EyI9olBM;IACI;IACA;IACA;GzIiplBV;;EyI9olBM;IACI;IACA;GzIiplBV;;EyI9olBM;IACI;GzIiplBV;;EyI9olBM;IACI;GzIiplBV;;EyI9olBM;IACI;GzIiplBV;CACF;;AsIjwlBA;EAIQ;IACI;IAIA;IACA;IACA;GtIiwlBV;;EsI/vlBU;IACI;GtIkwlBd;;EsI7vlBM;IACI;GtIgwlBV;;EsI7vlBM;IACI;GtIgwlBV;CACF;;AsI1vlBI;EACI;CtI6vlBR;;AsI1vlBI;EACI;CtI6vlBR;;AsI3vlBQ;EACI;EACA;EACA;CtI8vlBZ;;AsIxvlBA;EAIQ;;IACI;IAIA;IACA;IACA;GtIyvlBV;;EsIvvlBU;;IACI;GtI2vlBd;;EsItvlBM;;IACI;GtI0vlBV;;EsIvvlBM;;IACI;GtI2vlBV;CACF;;A0In0lBA;EACI;C1Is0lBJ;;A0Ip0lBI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C1Iu0lBR;;A0Ip0lBI;EACI;C1Iu0lBR;;A0Ip0lBI;EACI;EACA;EACA;EACA;EACA;C1Iu0lBR;;A0Ir0lBQ;EACI;C1Iw0lBZ;;A0Ir0lBQ;EACI;EACA;C1Iw0lBZ;;A0Ir0lBQ;EACI;C1Iw0lBZ;;A0In0lBY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;C1Is0lBhB;;A0In0lBY;EACI;EACA;EACA;EACA;EACA;EACA;C1Is0lBhB;;A0In0lBY;EACI;EACA;EACA;EACA;EACA;EACA;C1Is0lBhB;;A0I/zlBY;EACI;EACA;EACA;EACA;EACA;EACA;C1Ik0lBhB;;A0I/zlBY;EACI;EACA;EACA;EACA;EACA;EACA;C1Ik0lBhB;;A0I3zlBI;EACI;EACA;EACA;EACA;C1I8zlBR;;A0I3zlBI;EAEI;EACA;EACA;EACA;EACA;EACA;C1I6zlBR;;A0I3zlBQ;EACI;EACA;EACA;EACA;EACA;C1I8zlBZ;;A0IzzlBI;EACI;EACA;C1I4zlBR;;A0IzzlBI;EACI;EACA;EACA;EACA;EACA;C1I4zlBR;;A0IzzlBI;EACI;EACA;EACA;C1I4zlBR;;A0IvzlBQ;;EACI;EACA;EACA;C1I2zlBZ;;A0ItzlBI;EACI;C1IyzlBR;;A0IvzlBQ;EACI;EACA;EACA;C1I0zlBZ;;A0IvzlBQ;EAEI;EACA;EACA;C1IyzlBZ;;A0IvzlBY;EACI;C1I0zlBhB;;A0IrzlBQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;C1IwzlBZ;;A0IrzlBQ;EACI;C1IwzlBZ;;A0IrzlBQ;EACI;EACA;EACA;EACA;C1IwzlBZ;;A0I7ylBgB;EACI;EACA;EACA;EACA;C1IgzlBpB;;A0IvylBI;EACI;C1I0ylBR;;A0IvylBI;EACI;C1I0ylBR;;A0IrylBA;EAEI;IACI;G1IuylBN;;E0IpylBE;IACI;IACA;G1IuylBN;CACF;;A2IhhmBI;EACI;EACA;EACA;EACA;C3ImhmBR;;A2I9gmBA;EAIQ;IACI;IAIA;IACA;IACA;G3I8gmBV;;E2I5gmBU;IACI;G3I+gmBd;;E2I1gmBM;IACI;G3I6gmBV;;E2I1gmBM;IACI;G3I6gmBV;CACF;;A2IrgmBI;EACI;C3IwgmBR;;A2IpgmBA;EAGQ;IACI;IACA;IACA;G3IqgmBV;CACF;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I9jmBA;EACI;EACA;EACA;EACA;C5IikmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ;;A4I3jmBA;EACI;EACA;EACA;EACA;C5I8jmBJ","file":"/assets/css/crater.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #5851D8;\n --secondary: #55547A;\n --success: #00C99C;\n --info: #15B2EC;\n --warning: #F3AF4E;\n --danger: #FB7178;\n --light: #817AE3;\n --dark: #55547A;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: \"Poppins\", sans-serif;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=button]::-moz-focus-inner,\n[type=reset]::-moz-focus-inner,\n[type=submit]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=radio],\ninput[type=checkbox] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=date],\ninput[type=time],\ninput[type=datetime-local],\ninput[type=month] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=number]::-webkit-inner-spin-button,\n[type=number]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=search] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=search]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 1.2rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #5851D8;\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid, .container-xl, .container-lg, .container-md, .container-sm {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.no-gutters > .col,\n.no-gutters > [class*=col-] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-xl,\n.col-xl-auto, .col-xl-12, .col-xl-11, .col-xl-10, .col-xl-9, .col-xl-8, .col-xl-7, .col-xl-6, .col-xl-5, .col-xl-4, .col-xl-3, .col-xl-2, .col-xl-1, .col-lg,\n.col-lg-auto, .col-lg-12, .col-lg-11, .col-lg-10, .col-lg-9, .col-lg-8, .col-lg-7, .col-lg-6, .col-lg-5, .col-lg-4, .col-lg-3, .col-lg-2, .col-lg-1, .col-md,\n.col-md-auto, .col-md-12, .col-md-11, .col-md-10, .col-md-9, .col-md-8, .col-md-7, .col-md-6, .col-md-5, .col-md-4, .col-md-3, .col-md-2, .col-md-1, .col-sm,\n.col-sm-auto, .col-sm-12, .col-sm-11, .col-sm-10, .col-sm-9, .col-sm-8, .col-sm-7, .col-sm-6, .col-sm-5, .col-sm-4, .col-sm-3, .col-sm-2, .col-sm-1, .col,\n.col-auto, .col-12, .col-11, .col-10, .col-9, .col-8, .col-7, .col-6, .col-5, .col-4, .col-3, .col-2, .col-1 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.row-cols-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.3333333333%;\n max-width: 8.3333333333%;\n}\n\n.col-2 {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n}\n\n.col-5 {\n flex: 0 0 41.6666666667%;\n max-width: 41.6666666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.3333333333%;\n max-width: 58.3333333333%;\n}\n\n.col-8 {\n flex: 0 0 66.6666666667%;\n max-width: 66.6666666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.3333333333%;\n max-width: 83.3333333333%;\n}\n\n.col-11 {\n flex: 0 0 91.6666666667%;\n max-width: 91.6666666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n margin-left: 91.6666666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n .row-cols-sm-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .row-cols-sm-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n\n .col-sm-1 {\n flex: 0 0 8.3333333333%;\n max-width: 8.3333333333%;\n }\n\n .col-sm-2 {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .col-sm-4 {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .col-sm-5 {\n flex: 0 0 41.6666666667%;\n max-width: 41.6666666667%;\n }\n\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .col-sm-7 {\n flex: 0 0 58.3333333333%;\n max-width: 58.3333333333%;\n }\n\n .col-sm-8 {\n flex: 0 0 66.6666666667%;\n max-width: 66.6666666667%;\n }\n\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n\n .col-sm-10 {\n flex: 0 0 83.3333333333%;\n max-width: 83.3333333333%;\n }\n\n .col-sm-11 {\n flex: 0 0 91.6666666667%;\n max-width: 91.6666666667%;\n }\n\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .order-sm-first {\n order: -1;\n }\n\n .order-sm-last {\n order: 13;\n }\n\n .order-sm-0 {\n order: 0;\n }\n\n .order-sm-1 {\n order: 1;\n }\n\n .order-sm-2 {\n order: 2;\n }\n\n .order-sm-3 {\n order: 3;\n }\n\n .order-sm-4 {\n order: 4;\n }\n\n .order-sm-5 {\n order: 5;\n }\n\n .order-sm-6 {\n order: 6;\n }\n\n .order-sm-7 {\n order: 7;\n }\n\n .order-sm-8 {\n order: 8;\n }\n\n .order-sm-9 {\n order: 9;\n }\n\n .order-sm-10 {\n order: 10;\n }\n\n .order-sm-11 {\n order: 11;\n }\n\n .order-sm-12 {\n order: 12;\n }\n\n .offset-sm-0 {\n margin-left: 0;\n }\n\n .offset-sm-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-sm-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-sm-3 {\n margin-left: 25%;\n }\n\n .offset-sm-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-sm-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-sm-6 {\n margin-left: 50%;\n }\n\n .offset-sm-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-sm-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-sm-9 {\n margin-left: 75%;\n }\n\n .offset-sm-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-sm-11 {\n margin-left: 91.6666666667%;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n .row-cols-md-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .row-cols-md-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n\n .col-md-1 {\n flex: 0 0 8.3333333333%;\n max-width: 8.3333333333%;\n }\n\n .col-md-2 {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .col-md-4 {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .col-md-5 {\n flex: 0 0 41.6666666667%;\n max-width: 41.6666666667%;\n }\n\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .col-md-7 {\n flex: 0 0 58.3333333333%;\n max-width: 58.3333333333%;\n }\n\n .col-md-8 {\n flex: 0 0 66.6666666667%;\n max-width: 66.6666666667%;\n }\n\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n\n .col-md-10 {\n flex: 0 0 83.3333333333%;\n max-width: 83.3333333333%;\n }\n\n .col-md-11 {\n flex: 0 0 91.6666666667%;\n max-width: 91.6666666667%;\n }\n\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .order-md-first {\n order: -1;\n }\n\n .order-md-last {\n order: 13;\n }\n\n .order-md-0 {\n order: 0;\n }\n\n .order-md-1 {\n order: 1;\n }\n\n .order-md-2 {\n order: 2;\n }\n\n .order-md-3 {\n order: 3;\n }\n\n .order-md-4 {\n order: 4;\n }\n\n .order-md-5 {\n order: 5;\n }\n\n .order-md-6 {\n order: 6;\n }\n\n .order-md-7 {\n order: 7;\n }\n\n .order-md-8 {\n order: 8;\n }\n\n .order-md-9 {\n order: 9;\n }\n\n .order-md-10 {\n order: 10;\n }\n\n .order-md-11 {\n order: 11;\n }\n\n .order-md-12 {\n order: 12;\n }\n\n .offset-md-0 {\n margin-left: 0;\n }\n\n .offset-md-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-md-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-md-3 {\n margin-left: 25%;\n }\n\n .offset-md-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-md-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-md-6 {\n margin-left: 50%;\n }\n\n .offset-md-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-md-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-md-9 {\n margin-left: 75%;\n }\n\n .offset-md-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-md-11 {\n margin-left: 91.6666666667%;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n .row-cols-lg-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .row-cols-lg-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n\n .col-lg-1 {\n flex: 0 0 8.3333333333%;\n max-width: 8.3333333333%;\n }\n\n .col-lg-2 {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .col-lg-4 {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .col-lg-5 {\n flex: 0 0 41.6666666667%;\n max-width: 41.6666666667%;\n }\n\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .col-lg-7 {\n flex: 0 0 58.3333333333%;\n max-width: 58.3333333333%;\n }\n\n .col-lg-8 {\n flex: 0 0 66.6666666667%;\n max-width: 66.6666666667%;\n }\n\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n\n .col-lg-10 {\n flex: 0 0 83.3333333333%;\n max-width: 83.3333333333%;\n }\n\n .col-lg-11 {\n flex: 0 0 91.6666666667%;\n max-width: 91.6666666667%;\n }\n\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .order-lg-first {\n order: -1;\n }\n\n .order-lg-last {\n order: 13;\n }\n\n .order-lg-0 {\n order: 0;\n }\n\n .order-lg-1 {\n order: 1;\n }\n\n .order-lg-2 {\n order: 2;\n }\n\n .order-lg-3 {\n order: 3;\n }\n\n .order-lg-4 {\n order: 4;\n }\n\n .order-lg-5 {\n order: 5;\n }\n\n .order-lg-6 {\n order: 6;\n }\n\n .order-lg-7 {\n order: 7;\n }\n\n .order-lg-8 {\n order: 8;\n }\n\n .order-lg-9 {\n order: 9;\n }\n\n .order-lg-10 {\n order: 10;\n }\n\n .order-lg-11 {\n order: 11;\n }\n\n .order-lg-12 {\n order: 12;\n }\n\n .offset-lg-0 {\n margin-left: 0;\n }\n\n .offset-lg-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-lg-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-lg-3 {\n margin-left: 25%;\n }\n\n .offset-lg-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-lg-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-lg-6 {\n margin-left: 50%;\n }\n\n .offset-lg-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-lg-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-lg-9 {\n margin-left: 75%;\n }\n\n .offset-lg-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-lg-11 {\n margin-left: 91.6666666667%;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n .row-cols-xl-1 > * {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .row-cols-xl-4 > * {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: 0 0 20%;\n max-width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n\n .col-xl-1 {\n flex: 0 0 8.3333333333%;\n max-width: 8.3333333333%;\n }\n\n .col-xl-2 {\n flex: 0 0 16.6666666667%;\n max-width: 16.6666666667%;\n }\n\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .col-xl-4 {\n flex: 0 0 33.3333333333%;\n max-width: 33.3333333333%;\n }\n\n .col-xl-5 {\n flex: 0 0 41.6666666667%;\n max-width: 41.6666666667%;\n }\n\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .col-xl-7 {\n flex: 0 0 58.3333333333%;\n max-width: 58.3333333333%;\n }\n\n .col-xl-8 {\n flex: 0 0 66.6666666667%;\n max-width: 66.6666666667%;\n }\n\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n\n .col-xl-10 {\n flex: 0 0 83.3333333333%;\n max-width: 83.3333333333%;\n }\n\n .col-xl-11 {\n flex: 0 0 91.6666666667%;\n max-width: 91.6666666667%;\n }\n\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .order-xl-first {\n order: -1;\n }\n\n .order-xl-last {\n order: 13;\n }\n\n .order-xl-0 {\n order: 0;\n }\n\n .order-xl-1 {\n order: 1;\n }\n\n .order-xl-2 {\n order: 2;\n }\n\n .order-xl-3 {\n order: 3;\n }\n\n .order-xl-4 {\n order: 4;\n }\n\n .order-xl-5 {\n order: 5;\n }\n\n .order-xl-6 {\n order: 6;\n }\n\n .order-xl-7 {\n order: 7;\n }\n\n .order-xl-8 {\n order: 8;\n }\n\n .order-xl-9 {\n order: 9;\n }\n\n .order-xl-10 {\n order: 10;\n }\n\n .order-xl-11 {\n order: 11;\n }\n\n .order-xl-12 {\n order: 12;\n }\n\n .offset-xl-0 {\n margin-left: 0;\n }\n\n .offset-xl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xl-3 {\n margin-left: 25%;\n }\n\n .offset-xl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xl-6 {\n margin-left: 50%;\n }\n\n .offset-xl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xl-9 {\n margin-left: 75%;\n }\n\n .offset-xl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xl-11 {\n margin-left: 91.6666666667%;\n }\n}\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #d0cef4;\n}\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #a8a5eb;\n}\n\n.table-hover .table-primary:hover {\n background-color: #bcb9ef;\n}\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #bcb9ef;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #cfcfda;\n}\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #a7a6ba;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c1c1cf;\n}\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c1c1cf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #b8f0e3;\n}\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #7ae3cc;\n}\n\n.table-hover .table-success:hover {\n background-color: #a3ecdb;\n}\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #a3ecdb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bde9fa;\n}\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #85d7f5;\n}\n\n.table-hover .table-info:hover {\n background-color: #a5e1f8;\n}\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #a5e1f8;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #fce9cd;\n}\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #f9d5a3;\n}\n\n.table-hover .table-warning:hover {\n background-color: #fbdeb5;\n}\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #fbdeb5;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #fed7d9;\n}\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #fdb5b9;\n}\n\n.table-hover .table-danger:hover {\n background-color: #fdbec1;\n}\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #fdbec1;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #dcdaf7;\n}\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #bdbaf0;\n}\n\n.table-hover .table-light:hover {\n background-color: #c8c5f2;\n}\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #c8c5f2;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #cfcfda;\n}\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #a7a6ba;\n}\n\n.table-hover .table-dark:hover {\n background-color: #c1c1cf;\n}\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #c1c1cf;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n.table-dark.table-bordered {\n border: 0;\n}\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n.form-row > .col,\n.form-row > [class*=col-] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n.form-inline .form-check {\n width: 100%;\n}\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n.form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #3a32d1;\n border-color: #352dc9;\n}\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #3a32d1;\n border-color: #352dc9;\n box-shadow: 0 0 0 0.2rem rgba(113, 107, 222, 0.5);\n}\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #352dc9;\n border-color: #322bbf;\n}\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(113, 107, 222, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-secondary:hover {\n color: #fff;\n background-color: #454463;\n border-color: #403f5c;\n}\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #454463;\n border-color: #403f5c;\n box-shadow: 0 0 0 0.2rem rgba(111, 110, 142, 0.5);\n}\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #403f5c;\n border-color: #3b3a54;\n}\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(111, 110, 142, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #00C99C;\n border-color: #00C99C;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #00a37e;\n border-color: #009674;\n}\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #00a37e;\n border-color: #009674;\n box-shadow: 0 0 0 0.2rem rgba(38, 209, 171, 0.5);\n}\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #00C99C;\n border-color: #00C99C;\n}\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #009674;\n border-color: #00896b;\n}\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 209, 171, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #15B2EC;\n border-color: #15B2EC;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #1098ca;\n border-color: #0f8fbf;\n}\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #1098ca;\n border-color: #0f8fbf;\n box-shadow: 0 0 0 0.2rem rgba(56, 190, 239, 0.5);\n}\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #15B2EC;\n border-color: #15B2EC;\n}\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #0f8fbf;\n border-color: #0f86b3;\n}\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(56, 190, 239, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #F3AF4E;\n border-color: #F3AF4E;\n}\n.btn-warning:hover {\n color: #212529;\n background-color: #f19f2a;\n border-color: #f0991e;\n}\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #f19f2a;\n border-color: #f0991e;\n box-shadow: 0 0 0 0.2rem rgba(212, 154, 72, 0.5);\n}\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #F3AF4E;\n border-color: #F3AF4E;\n}\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #f0991e;\n border-color: #ef9412;\n}\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(212, 154, 72, 0.5);\n}\n\n.btn-danger {\n color: #212529;\n background-color: #FB7178;\n border-color: #FB7178;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #fa4c55;\n border-color: #fa3f49;\n}\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #fa4c55;\n border-color: #fa3f49;\n box-shadow: 0 0 0 0.2rem rgba(218, 102, 108, 0.5);\n}\n.btn-danger.disabled, .btn-danger:disabled {\n color: #212529;\n background-color: #FB7178;\n border-color: #FB7178;\n}\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #fa3f49;\n border-color: #f9333d;\n}\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(218, 102, 108, 0.5);\n}\n\n.btn-light {\n color: #fff;\n background-color: #817AE3;\n border-color: #817AE3;\n}\n.btn-light:hover {\n color: #fff;\n background-color: #635adc;\n border-color: #5950da;\n}\n.btn-light:focus, .btn-light.focus {\n color: #fff;\n background-color: #635adc;\n border-color: #5950da;\n box-shadow: 0 0 0 0.2rem rgba(148, 142, 231, 0.5);\n}\n.btn-light.disabled, .btn-light:disabled {\n color: #fff;\n background-color: #817AE3;\n border-color: #817AE3;\n}\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle {\n color: #fff;\n background-color: #5950da;\n border-color: #4f45d8;\n}\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(148, 142, 231, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-dark:hover {\n color: #fff;\n background-color: #454463;\n border-color: #403f5c;\n}\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #454463;\n border-color: #403f5c;\n box-shadow: 0 0 0 0.2rem rgba(111, 110, 142, 0.5);\n}\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #403f5c;\n border-color: #3b3a54;\n}\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(111, 110, 142, 0.5);\n}\n\n.btn-outline-primary {\n color: #5851D8;\n border-color: #5851D8;\n}\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #5851D8;\n background-color: transparent;\n}\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n\n.btn-outline-secondary {\n color: #55547A;\n border-color: #55547A;\n}\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(85, 84, 122, 0.5);\n}\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #55547A;\n background-color: transparent;\n}\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(85, 84, 122, 0.5);\n}\n\n.btn-outline-success {\n color: #00C99C;\n border-color: #00C99C;\n}\n.btn-outline-success:hover {\n color: #fff;\n background-color: #00C99C;\n border-color: #00C99C;\n}\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 201, 156, 0.5);\n}\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #00C99C;\n background-color: transparent;\n}\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #00C99C;\n border-color: #00C99C;\n}\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 201, 156, 0.5);\n}\n\n.btn-outline-info {\n color: #15B2EC;\n border-color: #15B2EC;\n}\n.btn-outline-info:hover {\n color: #fff;\n background-color: #15B2EC;\n border-color: #15B2EC;\n}\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(21, 178, 236, 0.5);\n}\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #15B2EC;\n background-color: transparent;\n}\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #15B2EC;\n border-color: #15B2EC;\n}\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(21, 178, 236, 0.5);\n}\n\n.btn-outline-warning {\n color: #F3AF4E;\n border-color: #F3AF4E;\n}\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #F3AF4E;\n border-color: #F3AF4E;\n}\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(243, 175, 78, 0.5);\n}\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #F3AF4E;\n background-color: transparent;\n}\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #F3AF4E;\n border-color: #F3AF4E;\n}\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(243, 175, 78, 0.5);\n}\n\n.btn-outline-danger {\n color: #FB7178;\n border-color: #FB7178;\n}\n.btn-outline-danger:hover {\n color: #212529;\n background-color: #FB7178;\n border-color: #FB7178;\n}\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(251, 113, 120, 0.5);\n}\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #FB7178;\n background-color: transparent;\n}\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle {\n color: #212529;\n background-color: #FB7178;\n border-color: #FB7178;\n}\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(251, 113, 120, 0.5);\n}\n\n.btn-outline-light {\n color: #817AE3;\n border-color: #817AE3;\n}\n.btn-outline-light:hover {\n color: #fff;\n background-color: #817AE3;\n border-color: #817AE3;\n}\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(129, 122, 227, 0.5);\n}\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #817AE3;\n background-color: transparent;\n}\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle {\n color: #fff;\n background-color: #817AE3;\n border-color: #817AE3;\n}\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(129, 122, 227, 0.5);\n}\n\n.btn-outline-dark {\n color: #55547A;\n border-color: #55547A;\n}\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(85, 84, 122, 0.5);\n}\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #55547A;\n background-color: transparent;\n}\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #55547A;\n border-color: #55547A;\n}\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(85, 84, 122, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=submit].btn-block,\ninput[type=reset].btn-block,\ninput[type=button].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #040405;\n background-clip: padding-box;\n border: 1px solid #040405;\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=top], .dropdown-menu[x-placement^=right], .dropdown-menu[x-placement^=bottom], .dropdown-menu[x-placement^=left] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #595959;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #fff;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #5851D8;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #fff;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n.btn-group-toggle > .btn input[type=radio],\n.btn-group-toggle > .btn input[type=checkbox],\n.btn-group-toggle > .btn-group > .btn input[type=radio],\n.btn-group-toggle > .btn-group > .btn input[type=checkbox] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n margin-bottom: 0;\n}\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n.input-group-text input[type=radio],\n.input-group-text input[type=checkbox] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50%/50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n transform: translateX(0.75rem);\n}\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n.custom-select::-ms-expand {\n display: none;\n}\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-file-input[disabled] ~ .custom-file-label, .custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n appearance: none;\n}\n.custom-range:focus {\n outline: none;\n}\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n.navbar .container,\n.navbar .container-fluid,\n.navbar .container-sm,\n.navbar .container-md,\n.navbar .container-lg,\n.navbar .container-xl {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n.navbar-expand-sm > .container-fluid,\n.navbar-expand-sm > .container-sm,\n.navbar-expand-sm > .container-md,\n.navbar-expand-sm > .container-lg,\n.navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n.navbar-expand-sm > .container-fluid,\n.navbar-expand-sm > .container-sm,\n.navbar-expand-sm > .container-md,\n.navbar-expand-sm > .container-lg,\n.navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n.navbar-expand-md > .container-fluid,\n.navbar-expand-md > .container-sm,\n.navbar-expand-md > .container-md,\n.navbar-expand-md > .container-lg,\n.navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n.navbar-expand-md > .container-fluid,\n.navbar-expand-md > .container-sm,\n.navbar-expand-md > .container-md,\n.navbar-expand-md > .container-lg,\n.navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n.navbar-expand-lg > .container-fluid,\n.navbar-expand-lg > .container-sm,\n.navbar-expand-lg > .container-md,\n.navbar-expand-lg > .container-lg,\n.navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n.navbar-expand-lg > .container-fluid,\n.navbar-expand-lg > .container-sm,\n.navbar-expand-lg > .container-md,\n.navbar-expand-lg > .container-lg,\n.navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n.navbar-expand-xl > .container-fluid,\n.navbar-expand-xl > .container-sm,\n.navbar-expand-xl > .container-md,\n.navbar-expand-xl > .container-lg,\n.navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n.navbar-expand-xl > .container-fluid,\n.navbar-expand-xl > .container-sm,\n.navbar-expand-xl > .container-md,\n.navbar-expand-xl > .container-lg,\n.navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n.navbar-expand > .container,\n.navbar-expand > .container-fluid,\n.navbar-expand > .container-sm,\n.navbar-expand > .container-md,\n.navbar-expand > .container-lg,\n.navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n.navbar-expand > .container,\n.navbar-expand > .container-fluid,\n.navbar-expand > .container-sm,\n.navbar-expand > .container-md,\n.navbar-expand > .container-lg,\n.navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: #fff;\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n flex: 1 0 0%;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #5851D8;\n}\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #352dc9;\n}\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #55547A;\n}\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #403f5c;\n}\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(85, 84, 122, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #00C99C;\n}\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #009674;\n}\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 201, 156, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #15B2EC;\n}\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #0f8fbf;\n}\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(21, 178, 236, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #F3AF4E;\n}\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #f0991e;\n}\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(243, 175, 78, 0.5);\n}\n\n.badge-danger {\n color: #212529;\n background-color: #FB7178;\n}\na.badge-danger:hover, a.badge-danger:focus {\n color: #212529;\n background-color: #fa3f49;\n}\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(251, 113, 120, 0.5);\n}\n\n.badge-light {\n color: #fff;\n background-color: #817AE3;\n}\na.badge-light:hover, a.badge-light:focus {\n color: #fff;\n background-color: #5950da;\n}\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(129, 122, 227, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #55547A;\n}\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #403f5c;\n}\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(85, 84, 122, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #2e2a70;\n background-color: #dedcf7;\n border-color: #d0cef4;\n}\n.alert-primary hr {\n border-top-color: #bcb9ef;\n}\n.alert-primary .alert-link {\n color: #1f1c4b;\n}\n\n.alert-secondary {\n color: #2c2c3f;\n background-color: #dddde4;\n border-color: #cfcfda;\n}\n.alert-secondary hr {\n border-top-color: #c1c1cf;\n}\n.alert-secondary .alert-link {\n color: #171721;\n}\n\n.alert-success {\n color: #006951;\n background-color: #ccf4eb;\n border-color: #b8f0e3;\n}\n.alert-success hr {\n border-top-color: #a3ecdb;\n}\n.alert-success .alert-link {\n color: #00362a;\n}\n\n.alert-info {\n color: #0b5d7b;\n background-color: #d0f0fb;\n border-color: #bde9fa;\n}\n.alert-info hr {\n border-top-color: #a5e1f8;\n}\n.alert-info .alert-link {\n color: #073a4c;\n}\n\n.alert-warning {\n color: #7e5b29;\n background-color: #fdefdc;\n border-color: #fce9cd;\n}\n.alert-warning hr {\n border-top-color: #fbdeb5;\n}\n.alert-warning .alert-link {\n color: #583f1c;\n}\n\n.alert-danger {\n color: #833b3e;\n background-color: #fee3e4;\n border-color: #fed7d9;\n}\n.alert-danger hr {\n border-top-color: #fdbec1;\n}\n.alert-danger .alert-link {\n color: #602b2d;\n}\n\n.alert-light {\n color: #433f76;\n background-color: #e6e4f9;\n border-color: #dcdaf7;\n}\n.alert-light hr {\n border-top-color: #c8c5f2;\n}\n.alert-light .alert-link {\n color: #302d55;\n}\n\n.alert-dark {\n color: #2c2c3f;\n background-color: #dddde4;\n border-color: #cfcfda;\n}\n.alert-dark hr {\n border-top-color: #c1c1cf;\n}\n.alert-dark .alert-link {\n color: #171721;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n.list-group-horizontal .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n.list-group-horizontal .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n.list-group-flush .list-group-item {\n border-right-width: 0;\n border-left-width: 0;\n border-radius: 0;\n}\n.list-group-flush .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n color: #2e2a70;\n background-color: #d0cef4;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #2e2a70;\n background-color: #bcb9ef;\n}\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #2e2a70;\n border-color: #2e2a70;\n}\n\n.list-group-item-secondary {\n color: #2c2c3f;\n background-color: #cfcfda;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #2c2c3f;\n background-color: #c1c1cf;\n}\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #2c2c3f;\n border-color: #2c2c3f;\n}\n\n.list-group-item-success {\n color: #006951;\n background-color: #b8f0e3;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #006951;\n background-color: #a3ecdb;\n}\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #006951;\n border-color: #006951;\n}\n\n.list-group-item-info {\n color: #0b5d7b;\n background-color: #bde9fa;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0b5d7b;\n background-color: #a5e1f8;\n}\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0b5d7b;\n border-color: #0b5d7b;\n}\n\n.list-group-item-warning {\n color: #7e5b29;\n background-color: #fce9cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #7e5b29;\n background-color: #fbdeb5;\n}\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #7e5b29;\n border-color: #7e5b29;\n}\n\n.list-group-item-danger {\n color: #833b3e;\n background-color: #fed7d9;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #833b3e;\n background-color: #fdbec1;\n}\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #833b3e;\n border-color: #833b3e;\n}\n\n.list-group-item-light {\n color: #433f76;\n background-color: #dcdaf7;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #433f76;\n background-color: #c8c5f2;\n}\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #433f76;\n border-color: #433f76;\n}\n\n.list-group-item-dark {\n color: #2c2c3f;\n background-color: #cfcfda;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #2c2c3f;\n background-color: #c1c1cf;\n}\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #2c2c3f;\n border-color: #2c2c3f;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.5;\n}\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: 0.75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n appearance: none;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n.toast.showing {\n opacity: 1;\n}\n.toast.show {\n display: block;\n opacity: 1;\n}\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n display: flex;\n max-height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n.modal-dialog-centered.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n margin: 0.25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n\n .modal-sm {\n max-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n.modal-xl {\n max-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: \"Poppins\", sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: 0.9;\n}\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=top] {\n padding: 0.4rem 0;\n}\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=top] .arrow {\n bottom: 0;\n}\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=top] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=right] {\n padding: 0 0.4rem;\n}\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=right] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=right] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=bottom] {\n padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=bottom] .arrow {\n top: 0;\n}\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=bottom] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=left] {\n padding: 0 0.4rem;\n}\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=left] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=left] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: \"Poppins\", sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=top] {\n margin-bottom: 0.5rem;\n}\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=top] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=top] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=top] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=right] {\n margin-left: 0.5rem;\n}\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=right] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=right] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=right] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=bottom] {\n margin-top: 0.5rem;\n}\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=bottom] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=bottom] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=bottom] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=left] {\n margin-right: 0.5rem;\n}\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=left] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=left] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=left] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n.carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50%/100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n.carousel-indicators li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n animation: spinner-border 0.75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n animation: spinner-grow 0.75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #5851D8 !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #352dc9 !important;\n}\n\n.bg-secondary {\n background-color: #55547A !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #403f5c !important;\n}\n\n.bg-success {\n background-color: #00C99C !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #009674 !important;\n}\n\n.bg-info {\n background-color: #15B2EC !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #0f8fbf !important;\n}\n\n.bg-warning {\n background-color: #F3AF4E !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #f0991e !important;\n}\n\n.bg-danger {\n background-color: #FB7178 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #fa3f49 !important;\n}\n\n.bg-light {\n background-color: #817AE3 !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #5950da !important;\n}\n\n.bg-dark {\n background-color: #55547A !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #403f5c !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #5851D8 !important;\n}\n\n.border-secondary {\n border-color: #55547A !important;\n}\n\n.border-success {\n border-color: #00C99C !important;\n}\n\n.border-info {\n border-color: #15B2EC !important;\n}\n\n.border-warning {\n border-color: #F3AF4E !important;\n}\n\n.border-danger {\n border-color: #FB7178 !important;\n}\n\n.border-light {\n border-color: #817AE3 !important;\n}\n\n.border-dark {\n border-color: #55547A !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n@media print {\n .d-print-none {\n display: none !important;\n }\n\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.8571428571%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.8571428571%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n\n .float-sm-right {\n float: right !important;\n }\n\n .float-sm-none {\n float: none !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n\n .float-md-right {\n float: right !important;\n }\n\n .float-md-none {\n float: none !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n\n .float-lg-right {\n float: right !important;\n }\n\n .float-lg-none {\n float: none !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n\n .float-xl-right {\n float: right !important;\n }\n\n .float-xl-none {\n float: none !important;\n }\n}\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .mt-sm-0,\n.my-sm-0 {\n margin-top: 0 !important;\n }\n\n .mr-sm-0,\n.mx-sm-0 {\n margin-right: 0 !important;\n }\n\n .mb-sm-0,\n.my-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .ml-sm-0,\n.mx-sm-0 {\n margin-left: 0 !important;\n }\n\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n\n .mt-sm-1,\n.my-sm-1 {\n margin-top: 0.25rem !important;\n }\n\n .mr-sm-1,\n.mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n\n .mb-sm-1,\n.my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .ml-sm-1,\n.mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n\n .mt-sm-2,\n.my-sm-2 {\n margin-top: 0.5rem !important;\n }\n\n .mr-sm-2,\n.mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n\n .mb-sm-2,\n.my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .ml-sm-2,\n.mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .mt-sm-3,\n.my-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mr-sm-3,\n.mx-sm-3 {\n margin-right: 1rem !important;\n }\n\n .mb-sm-3,\n.my-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .ml-sm-3,\n.mx-sm-3 {\n margin-left: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .mt-sm-4,\n.my-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mr-sm-4,\n.mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .mb-sm-4,\n.my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .ml-sm-4,\n.mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .mt-sm-5,\n.my-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mr-sm-5,\n.mx-sm-5 {\n margin-right: 3rem !important;\n }\n\n .mb-sm-5,\n.my-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .ml-sm-5,\n.mx-sm-5 {\n margin-left: 3rem !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .pt-sm-0,\n.py-sm-0 {\n padding-top: 0 !important;\n }\n\n .pr-sm-0,\n.px-sm-0 {\n padding-right: 0 !important;\n }\n\n .pb-sm-0,\n.py-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pl-sm-0,\n.px-sm-0 {\n padding-left: 0 !important;\n }\n\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n\n .pt-sm-1,\n.py-sm-1 {\n padding-top: 0.25rem !important;\n }\n\n .pr-sm-1,\n.px-sm-1 {\n padding-right: 0.25rem !important;\n }\n\n .pb-sm-1,\n.py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pl-sm-1,\n.px-sm-1 {\n padding-left: 0.25rem !important;\n }\n\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n\n .pt-sm-2,\n.py-sm-2 {\n padding-top: 0.5rem !important;\n }\n\n .pr-sm-2,\n.px-sm-2 {\n padding-right: 0.5rem !important;\n }\n\n .pb-sm-2,\n.py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pl-sm-2,\n.px-sm-2 {\n padding-left: 0.5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .pt-sm-3,\n.py-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pr-sm-3,\n.px-sm-3 {\n padding-right: 1rem !important;\n }\n\n .pb-sm-3,\n.py-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pl-sm-3,\n.px-sm-3 {\n padding-left: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .pt-sm-4,\n.py-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pr-sm-4,\n.px-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .pb-sm-4,\n.py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pl-sm-4,\n.px-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .pt-sm-5,\n.py-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pr-sm-5,\n.px-sm-5 {\n padding-right: 3rem !important;\n }\n\n .pb-sm-5,\n.py-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .pl-sm-5,\n.px-sm-5 {\n padding-left: 3rem !important;\n }\n\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n\n .mt-sm-n1,\n.my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n\n .mr-sm-n1,\n.mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n\n .mb-sm-n1,\n.my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n\n .ml-sm-n1,\n.mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n\n .mt-sm-n2,\n.my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n\n .mr-sm-n2,\n.mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n\n .mb-sm-n2,\n.my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n\n .ml-sm-n2,\n.mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n\n .m-sm-n3 {\n margin: -1rem !important;\n }\n\n .mt-sm-n3,\n.my-sm-n3 {\n margin-top: -1rem !important;\n }\n\n .mr-sm-n3,\n.mx-sm-n3 {\n margin-right: -1rem !important;\n }\n\n .mb-sm-n3,\n.my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n\n .ml-sm-n3,\n.mx-sm-n3 {\n margin-left: -1rem !important;\n }\n\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n\n .mt-sm-n4,\n.my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n\n .mr-sm-n4,\n.mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n\n .mb-sm-n4,\n.my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n\n .ml-sm-n4,\n.mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n\n .m-sm-n5 {\n margin: -3rem !important;\n }\n\n .mt-sm-n5,\n.my-sm-n5 {\n margin-top: -3rem !important;\n }\n\n .mr-sm-n5,\n.mx-sm-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-sm-n5,\n.my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ml-sm-n5,\n.mx-sm-n5 {\n margin-left: -3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mt-sm-auto,\n.my-sm-auto {\n margin-top: auto !important;\n }\n\n .mr-sm-auto,\n.mx-sm-auto {\n margin-right: auto !important;\n }\n\n .mb-sm-auto,\n.my-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ml-sm-auto,\n.mx-sm-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n\n .mt-md-0,\n.my-md-0 {\n margin-top: 0 !important;\n }\n\n .mr-md-0,\n.mx-md-0 {\n margin-right: 0 !important;\n }\n\n .mb-md-0,\n.my-md-0 {\n margin-bottom: 0 !important;\n }\n\n .ml-md-0,\n.mx-md-0 {\n margin-left: 0 !important;\n }\n\n .m-md-1 {\n margin: 0.25rem !important;\n }\n\n .mt-md-1,\n.my-md-1 {\n margin-top: 0.25rem !important;\n }\n\n .mr-md-1,\n.mx-md-1 {\n margin-right: 0.25rem !important;\n }\n\n .mb-md-1,\n.my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .ml-md-1,\n.mx-md-1 {\n margin-left: 0.25rem !important;\n }\n\n .m-md-2 {\n margin: 0.5rem !important;\n }\n\n .mt-md-2,\n.my-md-2 {\n margin-top: 0.5rem !important;\n }\n\n .mr-md-2,\n.mx-md-2 {\n margin-right: 0.5rem !important;\n }\n\n .mb-md-2,\n.my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .ml-md-2,\n.mx-md-2 {\n margin-left: 0.5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .mt-md-3,\n.my-md-3 {\n margin-top: 1rem !important;\n }\n\n .mr-md-3,\n.mx-md-3 {\n margin-right: 1rem !important;\n }\n\n .mb-md-3,\n.my-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .ml-md-3,\n.mx-md-3 {\n margin-left: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .mt-md-4,\n.my-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mr-md-4,\n.mx-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .mb-md-4,\n.my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .ml-md-4,\n.mx-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .mt-md-5,\n.my-md-5 {\n margin-top: 3rem !important;\n }\n\n .mr-md-5,\n.mx-md-5 {\n margin-right: 3rem !important;\n }\n\n .mb-md-5,\n.my-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .ml-md-5,\n.mx-md-5 {\n margin-left: 3rem !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .pt-md-0,\n.py-md-0 {\n padding-top: 0 !important;\n }\n\n .pr-md-0,\n.px-md-0 {\n padding-right: 0 !important;\n }\n\n .pb-md-0,\n.py-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pl-md-0,\n.px-md-0 {\n padding-left: 0 !important;\n }\n\n .p-md-1 {\n padding: 0.25rem !important;\n }\n\n .pt-md-1,\n.py-md-1 {\n padding-top: 0.25rem !important;\n }\n\n .pr-md-1,\n.px-md-1 {\n padding-right: 0.25rem !important;\n }\n\n .pb-md-1,\n.py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pl-md-1,\n.px-md-1 {\n padding-left: 0.25rem !important;\n }\n\n .p-md-2 {\n padding: 0.5rem !important;\n }\n\n .pt-md-2,\n.py-md-2 {\n padding-top: 0.5rem !important;\n }\n\n .pr-md-2,\n.px-md-2 {\n padding-right: 0.5rem !important;\n }\n\n .pb-md-2,\n.py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pl-md-2,\n.px-md-2 {\n padding-left: 0.5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .pt-md-3,\n.py-md-3 {\n padding-top: 1rem !important;\n }\n\n .pr-md-3,\n.px-md-3 {\n padding-right: 1rem !important;\n }\n\n .pb-md-3,\n.py-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pl-md-3,\n.px-md-3 {\n padding-left: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .pt-md-4,\n.py-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pr-md-4,\n.px-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .pb-md-4,\n.py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pl-md-4,\n.px-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .pt-md-5,\n.py-md-5 {\n padding-top: 3rem !important;\n }\n\n .pr-md-5,\n.px-md-5 {\n padding-right: 3rem !important;\n }\n\n .pb-md-5,\n.py-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .pl-md-5,\n.px-md-5 {\n padding-left: 3rem !important;\n }\n\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n\n .mt-md-n1,\n.my-md-n1 {\n margin-top: -0.25rem !important;\n }\n\n .mr-md-n1,\n.mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n\n .mb-md-n1,\n.my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n\n .ml-md-n1,\n.mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n\n .mt-md-n2,\n.my-md-n2 {\n margin-top: -0.5rem !important;\n }\n\n .mr-md-n2,\n.mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n\n .mb-md-n2,\n.my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n\n .ml-md-n2,\n.mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n\n .m-md-n3 {\n margin: -1rem !important;\n }\n\n .mt-md-n3,\n.my-md-n3 {\n margin-top: -1rem !important;\n }\n\n .mr-md-n3,\n.mx-md-n3 {\n margin-right: -1rem !important;\n }\n\n .mb-md-n3,\n.my-md-n3 {\n margin-bottom: -1rem !important;\n }\n\n .ml-md-n3,\n.mx-md-n3 {\n margin-left: -1rem !important;\n }\n\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n\n .mt-md-n4,\n.my-md-n4 {\n margin-top: -1.5rem !important;\n }\n\n .mr-md-n4,\n.mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n\n .mb-md-n4,\n.my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n\n .ml-md-n4,\n.mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n\n .m-md-n5 {\n margin: -3rem !important;\n }\n\n .mt-md-n5,\n.my-md-n5 {\n margin-top: -3rem !important;\n }\n\n .mr-md-n5,\n.mx-md-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-md-n5,\n.my-md-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ml-md-n5,\n.mx-md-n5 {\n margin-left: -3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mt-md-auto,\n.my-md-auto {\n margin-top: auto !important;\n }\n\n .mr-md-auto,\n.mx-md-auto {\n margin-right: auto !important;\n }\n\n .mb-md-auto,\n.my-md-auto {\n margin-bottom: auto !important;\n }\n\n .ml-md-auto,\n.mx-md-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .mt-lg-0,\n.my-lg-0 {\n margin-top: 0 !important;\n }\n\n .mr-lg-0,\n.mx-lg-0 {\n margin-right: 0 !important;\n }\n\n .mb-lg-0,\n.my-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .ml-lg-0,\n.mx-lg-0 {\n margin-left: 0 !important;\n }\n\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n\n .mt-lg-1,\n.my-lg-1 {\n margin-top: 0.25rem !important;\n }\n\n .mr-lg-1,\n.mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n\n .mb-lg-1,\n.my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .ml-lg-1,\n.mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n\n .mt-lg-2,\n.my-lg-2 {\n margin-top: 0.5rem !important;\n }\n\n .mr-lg-2,\n.mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n\n .mb-lg-2,\n.my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .ml-lg-2,\n.mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .mt-lg-3,\n.my-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mr-lg-3,\n.mx-lg-3 {\n margin-right: 1rem !important;\n }\n\n .mb-lg-3,\n.my-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .ml-lg-3,\n.mx-lg-3 {\n margin-left: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .mt-lg-4,\n.my-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mr-lg-4,\n.mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .mb-lg-4,\n.my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .ml-lg-4,\n.mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .mt-lg-5,\n.my-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mr-lg-5,\n.mx-lg-5 {\n margin-right: 3rem !important;\n }\n\n .mb-lg-5,\n.my-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .ml-lg-5,\n.mx-lg-5 {\n margin-left: 3rem !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .pt-lg-0,\n.py-lg-0 {\n padding-top: 0 !important;\n }\n\n .pr-lg-0,\n.px-lg-0 {\n padding-right: 0 !important;\n }\n\n .pb-lg-0,\n.py-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pl-lg-0,\n.px-lg-0 {\n padding-left: 0 !important;\n }\n\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n\n .pt-lg-1,\n.py-lg-1 {\n padding-top: 0.25rem !important;\n }\n\n .pr-lg-1,\n.px-lg-1 {\n padding-right: 0.25rem !important;\n }\n\n .pb-lg-1,\n.py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pl-lg-1,\n.px-lg-1 {\n padding-left: 0.25rem !important;\n }\n\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n\n .pt-lg-2,\n.py-lg-2 {\n padding-top: 0.5rem !important;\n }\n\n .pr-lg-2,\n.px-lg-2 {\n padding-right: 0.5rem !important;\n }\n\n .pb-lg-2,\n.py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pl-lg-2,\n.px-lg-2 {\n padding-left: 0.5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .pt-lg-3,\n.py-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pr-lg-3,\n.px-lg-3 {\n padding-right: 1rem !important;\n }\n\n .pb-lg-3,\n.py-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pl-lg-3,\n.px-lg-3 {\n padding-left: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .pt-lg-4,\n.py-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pr-lg-4,\n.px-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .pb-lg-4,\n.py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pl-lg-4,\n.px-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .pt-lg-5,\n.py-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pr-lg-5,\n.px-lg-5 {\n padding-right: 3rem !important;\n }\n\n .pb-lg-5,\n.py-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .pl-lg-5,\n.px-lg-5 {\n padding-left: 3rem !important;\n }\n\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n\n .mt-lg-n1,\n.my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n\n .mr-lg-n1,\n.mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n\n .mb-lg-n1,\n.my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n\n .ml-lg-n1,\n.mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n\n .mt-lg-n2,\n.my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n\n .mr-lg-n2,\n.mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n\n .mb-lg-n2,\n.my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n\n .ml-lg-n2,\n.mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n\n .m-lg-n3 {\n margin: -1rem !important;\n }\n\n .mt-lg-n3,\n.my-lg-n3 {\n margin-top: -1rem !important;\n }\n\n .mr-lg-n3,\n.mx-lg-n3 {\n margin-right: -1rem !important;\n }\n\n .mb-lg-n3,\n.my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n\n .ml-lg-n3,\n.mx-lg-n3 {\n margin-left: -1rem !important;\n }\n\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n\n .mt-lg-n4,\n.my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n\n .mr-lg-n4,\n.mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n\n .mb-lg-n4,\n.my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n\n .ml-lg-n4,\n.mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n\n .m-lg-n5 {\n margin: -3rem !important;\n }\n\n .mt-lg-n5,\n.my-lg-n5 {\n margin-top: -3rem !important;\n }\n\n .mr-lg-n5,\n.mx-lg-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-lg-n5,\n.my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ml-lg-n5,\n.mx-lg-n5 {\n margin-left: -3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mt-lg-auto,\n.my-lg-auto {\n margin-top: auto !important;\n }\n\n .mr-lg-auto,\n.mx-lg-auto {\n margin-right: auto !important;\n }\n\n .mb-lg-auto,\n.my-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ml-lg-auto,\n.mx-lg-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .mt-xl-0,\n.my-xl-0 {\n margin-top: 0 !important;\n }\n\n .mr-xl-0,\n.mx-xl-0 {\n margin-right: 0 !important;\n }\n\n .mb-xl-0,\n.my-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .ml-xl-0,\n.mx-xl-0 {\n margin-left: 0 !important;\n }\n\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n\n .mt-xl-1,\n.my-xl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mr-xl-1,\n.mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n\n .mb-xl-1,\n.my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .ml-xl-1,\n.mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n\n .mt-xl-2,\n.my-xl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mr-xl-2,\n.mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n\n .mb-xl-2,\n.my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .ml-xl-2,\n.mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .mt-xl-3,\n.my-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mr-xl-3,\n.mx-xl-3 {\n margin-right: 1rem !important;\n }\n\n .mb-xl-3,\n.my-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .ml-xl-3,\n.mx-xl-3 {\n margin-left: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .mt-xl-4,\n.my-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mr-xl-4,\n.mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .mb-xl-4,\n.my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .ml-xl-4,\n.mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .mt-xl-5,\n.my-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mr-xl-5,\n.mx-xl-5 {\n margin-right: 3rem !important;\n }\n\n .mb-xl-5,\n.my-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .ml-xl-5,\n.mx-xl-5 {\n margin-left: 3rem !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .pt-xl-0,\n.py-xl-0 {\n padding-top: 0 !important;\n }\n\n .pr-xl-0,\n.px-xl-0 {\n padding-right: 0 !important;\n }\n\n .pb-xl-0,\n.py-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pl-xl-0,\n.px-xl-0 {\n padding-left: 0 !important;\n }\n\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n\n .pt-xl-1,\n.py-xl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pr-xl-1,\n.px-xl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pb-xl-1,\n.py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pl-xl-1,\n.px-xl-1 {\n padding-left: 0.25rem !important;\n }\n\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n\n .pt-xl-2,\n.py-xl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pr-xl-2,\n.px-xl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pb-xl-2,\n.py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pl-xl-2,\n.px-xl-2 {\n padding-left: 0.5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .pt-xl-3,\n.py-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pr-xl-3,\n.px-xl-3 {\n padding-right: 1rem !important;\n }\n\n .pb-xl-3,\n.py-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pl-xl-3,\n.px-xl-3 {\n padding-left: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .pt-xl-4,\n.py-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pr-xl-4,\n.px-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pb-xl-4,\n.py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pl-xl-4,\n.px-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .pt-xl-5,\n.py-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pr-xl-5,\n.px-xl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xl-5,\n.py-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .pl-xl-5,\n.px-xl-5 {\n padding-left: 3rem !important;\n }\n\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n\n .mt-xl-n1,\n.my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n\n .mr-xl-n1,\n.mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n\n .mb-xl-n1,\n.my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n\n .ml-xl-n1,\n.mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n\n .mt-xl-n2,\n.my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n\n .mr-xl-n2,\n.mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n\n .mb-xl-n2,\n.my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n\n .ml-xl-n2,\n.mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n\n .m-xl-n3 {\n margin: -1rem !important;\n }\n\n .mt-xl-n3,\n.my-xl-n3 {\n margin-top: -1rem !important;\n }\n\n .mr-xl-n3,\n.mx-xl-n3 {\n margin-right: -1rem !important;\n }\n\n .mb-xl-n3,\n.my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n\n .ml-xl-n3,\n.mx-xl-n3 {\n margin-left: -1rem !important;\n }\n\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n\n .mt-xl-n4,\n.my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n\n .mr-xl-n4,\n.mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n\n .mb-xl-n4,\n.my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n\n .ml-xl-n4,\n.mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n\n .m-xl-n5 {\n margin: -3rem !important;\n }\n\n .mt-xl-n5,\n.my-xl-n5 {\n margin-top: -3rem !important;\n }\n\n .mr-xl-n5,\n.mx-xl-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-xl-n5,\n.my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ml-xl-n5,\n.mx-xl-n5 {\n margin-left: -3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mt-xl-auto,\n.my-xl-auto {\n margin-top: auto !important;\n }\n\n .mr-xl-auto,\n.mx-xl-auto {\n margin-right: auto !important;\n }\n\n .mb-xl-auto,\n.my-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ml-xl-auto,\n.mx-xl-auto {\n margin-left: auto !important;\n }\n}\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n\n .text-sm-right {\n text-align: right !important;\n }\n\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n\n .text-md-right {\n text-align: right !important;\n }\n\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n\n .text-lg-right {\n text-align: right !important;\n }\n\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n\n .text-xl-right {\n text-align: right !important;\n }\n\n .text-xl-center {\n text-align: center !important;\n }\n}\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #5851D8 !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #3028b4 !important;\n}\n\n.text-secondary {\n color: #55547A !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #35354d !important;\n}\n\n.text-success {\n color: #00C99C !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #007d61 !important;\n}\n\n.text-info {\n color: #15B2EC !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0e7ea7 !important;\n}\n\n.text-warning {\n color: #F3AF4E !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #e58d10 !important;\n}\n\n.text-danger {\n color: #FB7178 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #f92731 !important;\n}\n\n.text-light {\n color: #817AE3 !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #453bd6 !important;\n}\n\n.text-dark {\n color: #55547A !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #35354d !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n*::before,\n*::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n\n a:not(.btn) {\n text-decoration: underline;\n }\n\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n\n pre {\n white-space: pre-wrap !important;\n }\n\n pre,\nblockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group;\n }\n\n tr,\nimg {\n page-break-inside: avoid;\n }\n\n p,\nh2,\nh3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\nh3 {\n page-break-after: avoid;\n }\n\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n\n .container {\n min-width: 992px !important;\n }\n\n .navbar {\n display: none;\n }\n\n .badge {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n.table th {\n background-color: #fff !important;\n }\n\n .table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n.toast-title {\n font-weight: bold;\n}\n\n.toast-message {\n -ms-word-wrap: break-word;\n word-wrap: break-word;\n}\n\n.toast-message a,\n.toast-message label {\n color: #ffffff;\n}\n\n.toast-message a:hover {\n color: #cccccc;\n text-decoration: none;\n}\n\n.toast-close-button {\n position: relative;\n right: -0.3em;\n top: -0.3em;\n float: right;\n font-size: 20px;\n font-weight: bold;\n color: #ffffff;\n -webkit-text-shadow: 0 1px 0 #ffffff;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.8;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);\n filter: alpha(opacity=80);\n}\n\n.toast-close-button:hover,\n.toast-close-button:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.4;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);\n filter: alpha(opacity=40);\n}\n\n/*Additional properties for button version\n iOS requires the button element instead of an anchor tag.\n If you want the anchor version, it requires `href=\"#\"`.*/\nbutton.toast-close-button {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.toast-top-center {\n top: 0;\n right: 0;\n width: 100%;\n}\n\n.toast-bottom-center {\n bottom: 0;\n right: 0;\n width: 100%;\n}\n\n.toast-top-full-width {\n top: 0;\n right: 0;\n width: 100%;\n}\n\n.toast-bottom-full-width {\n bottom: 0;\n right: 0;\n width: 100%;\n}\n\n.toast-top-left {\n top: 12px;\n left: 12px;\n}\n\n.toast-top-right {\n top: 12px;\n right: 12px;\n}\n\n.toast-bottom-right {\n right: 12px;\n bottom: 12px;\n}\n\n.toast-bottom-left {\n bottom: 12px;\n left: 12px;\n}\n\n#toast-container {\n position: fixed;\n z-index: 999999;\n /*overrides*/\n}\n\n#toast-container * {\n -moz-box-sizing: border-box;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n#toast-container > div {\n position: relative;\n overflow: hidden;\n margin: 0 0 6px;\n padding: 15px 15px 15px 50px;\n width: 300px;\n -moz-border-radius: 3px 3px 3px 3px;\n -webkit-border-radius: 3px 3px 3px 3px;\n border-radius: 3px 3px 3px 3px;\n background-position: 15px center;\n background-repeat: no-repeat;\n -moz-box-shadow: 0 0 12px #999999;\n -webkit-box-shadow: 0 0 12px #999999;\n box-shadow: 0 0 12px #999999;\n color: #ffffff;\n opacity: 0.8;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);\n filter: alpha(opacity=80);\n}\n\n#toast-container > div:hover {\n -moz-box-shadow: 0 0 12px #000000;\n -webkit-box-shadow: 0 0 12px #000000;\n box-shadow: 0 0 12px #000000;\n opacity: 1;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n filter: alpha(opacity=100);\n cursor: pointer;\n}\n\n#toast-container > .toast-info {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=\") !important;\n}\n\n#toast-container > .toast-error {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=\") !important;\n}\n\n#toast-container > .toast-success {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==\") !important;\n}\n\n#toast-container > .toast-warning {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=\") !important;\n}\n\n#toast-container.toast-top-center > div,\n#toast-container.toast-bottom-center > div {\n width: 300px;\n margin-left: auto;\n margin-right: auto;\n}\n\n#toast-container.toast-top-full-width > div,\n#toast-container.toast-bottom-full-width > div {\n width: 96%;\n margin-left: auto;\n margin-right: auto;\n}\n\n.toast {\n background-color: #030303;\n}\n\n.toast-success {\n background-color: #51a351;\n}\n\n.toast-error {\n background-color: #bd362f;\n}\n\n.toast-info {\n background-color: #2f96b4;\n}\n\n.toast-warning {\n background-color: #f89406;\n}\n\n.toast-progress {\n position: absolute;\n left: 0;\n bottom: 0;\n height: 4px;\n background-color: #000000;\n opacity: 0.4;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);\n filter: alpha(opacity=40);\n}\n\n/*Responsive Design*/\n@media all and (max-width: 240px) {\n #toast-container > div {\n padding: 8px 8px 8px 50px;\n width: 11em;\n }\n\n #toast-container .toast-close-button {\n right: -0.2em;\n top: -0.2em;\n }\n}\n@media all and (min-width: 241px) and (max-width: 480px) {\n #toast-container > div {\n padding: 8px 8px 8px 50px;\n width: 18em;\n }\n\n #toast-container .toast-close-button {\n right: -0.2em;\n top: -0.2em;\n }\n}\n@media all and (min-width: 481px) and (max-width: 768px) {\n #toast-container > div {\n padding: 15px 15px 15px 50px;\n width: 25em;\n }\n}\n.skin-crater .main-content {\n background: #F9FBFF;\n}\n.skin-crater .no-data-info .title {\n font-weight: 500;\n font-size: 17.5px;\n}\n.skin-crater .no-data-info .description {\n font-size: 15px;\n color: #595959;\n}\n.skin-crater .site-header {\n background: linear-gradient(to right, #5851D8, #817AE3) !important;\n border-bottom: 1px solid rgba(230, 230, 230, 0.7);\n}\n.skin-crater .site-header .brand-main {\n color: #fff;\n font-size: 20px;\n font-family: poppins, sans-serif;\n font-style: normal;\n font-weight: 900;\n letter-spacing: 1px;\n}\n.skin-crater .site-header .nav-toggle {\n background-color: #fff;\n color: #040405;\n}\n.skin-crater .site-header .hamburger span {\n background: #040405;\n}\n.skin-crater .site-header .hamburger-inner,\n.skin-crater .site-header .hamburger-inner::before,\n.skin-crater .site-header .hamburger-inner::after {\n background-color: #040405;\n}\n.skin-crater .site-header .hamburger span::before,\n.skin-crater .site-header .hamburger span::after {\n background-color: #040405;\n}\n.skin-crater .site-header .action-list li a {\n background-color: #fff;\n color: #040405;\n}\n.skin-crater .site-header .action-list li a:hover {\n background-color: #f2f2f2;\n color: #040405;\n}\n.skin-crater .site-header .dropdown-menu {\n background-color: #fff;\n}\n.skin-crater .site-header .notification-dropdown .dropdown-header {\n border-bottom: 1px solid #EBF1FA;\n color: #5851D8;\n}\n.skin-crater .site-header .dropdown-divider {\n background-color: #A5ACC1;\n}\n.skin-crater .header-nav .dropdown-group.dropdown-group.active > .dropdown-activator > a {\n color: #5851D8;\n}\n.skin-crater .header-nav .dropdown-group.has-child.toggle-arrow.active > .dropdown-activator::after {\n border-color: #5851D8 transparent transparent;\n}\n.skin-crater .sidebar-left {\n background-color: #fff;\n border-right: 1px solid #EBF1FA;\n}\n.skin-crater .side-nav {\n margin: 20px 0 0 0;\n}\n.skin-crater .side-nav .side-nav-division {\n margin-bottom: 20px;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item a {\n color: #040405;\n font-family: poppins, sans-serif;\n font-size: 14px;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item a:hover {\n background-color: #d7e3f5;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item.active > .collapse-item-title > a {\n color: #5851D8;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-item-title i {\n color: #A5ACC1;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item.active i {\n color: #5851D8;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items {\n background-color: #EBF1FA;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items {\n background-color: #d7e3f5;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items .collapse-group-items {\n background-color: #cadaf2;\n}\n.skin-crater .side-nav .collapse-group .collapse-group-item .collapse-group-items a.active {\n color: #5851D8;\n}\n.skin-crater .header-bottom {\n background-color: #fff;\n border-bottom: 1px solid #B9C1D1;\n}\n.skin-crater .header-nav li a {\n color: #040405;\n}\n.skin-crater .header-nav li a:hover {\n background-color: #d7e3f5;\n color: #040405;\n}\n.skin-crater .header-nav li.active > a {\n color: #5851D8;\n background-color: transparent;\n}\n.skin-crater .header-nav li.active > a:hover {\n color: #5851D8;\n background-color: transparent;\n}\n.skin-crater .header-nav li .dropdown-item.active {\n color: #5851D8;\n background-color: transparent;\n}\n.skin-crater .header-nav li .dropdown-item.active:hover, .skin-crater .header-nav li .dropdown-item.active:focus, .skin-crater .header-nav li .dropdown-item.active:active {\n color: #5851D8;\n background-color: #d7e3f5;\n}\n.skin-crater .tabs-component.tabs-default .tabs-component-tab a {\n color: #040405;\n}\n.skin-crater .tabs-component.tabs-default .tabs-component-tab a:hover {\n color: #040405;\n}\n.skin-crater .tabs-component.tabs-default .tabs-component-tab.is-active {\n border: 1px solid #5851D8;\n background: #5851D8;\n color: #fff;\n}\n.skin-crater .tabs-component.tabs-default .tabs-component-tab.is-active a {\n color: #fff;\n}\n.skin-crater .tabs-component.tabs-default .tabs-component-tab:hover {\n border: 1px solid #5851D8;\n}\n.skin-crater .tabs-component.tabs-default .tabs-component-panels {\n border-top: 1px solid #5851D8 !important;\n}\n.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs {\n border-right: 1px solid #5851D8 !important;\n}\n.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a, .skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a:hover {\n color: #040405;\n}\n.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active {\n background: #5851D8;\n}\n.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active a {\n color: #fff;\n}\n.skin-crater .tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab:hover {\n border: 1px solid #5851D8;\n}\n.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a {\n color: #A5ACC1;\n font-weight: 500;\n}\n.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a:hover {\n color: #A5ACC1;\n border-bottom: 3px solid #A5ACC1;\n}\n.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active {\n border-bottom: 3px solid #5851D8;\n color: #fff;\n}\n.skin-crater .tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active a {\n color: #040405;\n}\n.skin-crater .tabs-component.tabs-simple .tabs-component-panels {\n border-top: 1px solid #EBF1FA !important;\n}\n.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs {\n border-right: 1px solid #ddd;\n}\n.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a {\n color: #A5ACC1;\n font-weight: 500;\n}\n.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a:hover {\n border-right: 3px solid #d0cef4;\n}\n.skin-crater .tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab.is-active {\n border-right: 3px solid #5851D8;\n color: #5851D8;\n}\n.skin-crater code, .skin-crater .code {\n background-color: #EBF1FA;\n color: #5851D8;\n}\n.skin-crater mark, .skin-crater .mark {\n background-color: #5851D8;\n color: #fff;\n}\n.skin-crater .todo-container {\n background-color: #5851D8 !important;\n color: #fff !important;\n}\n.skin-crater .todo-container h5 {\n color: #fff !important;\n}\n.skin-crater .vue-dropzone .dz-preview .dz-details {\n background-color: #5851D8 !important;\n color: #fff !important;\n}\n.skin-crater .vue-dropzone .dz-preview .dz-upload {\n background: #fff !important;\n}\n.skin-crater .vue-dropzone .dz-preview .dz-error-mark svg #Page-1 g {\n fill: #fff !important;\n}\n.skin-crater .vue-dropzone .dz-preview .dz-success-mark svg g path {\n fill: white !important;\n}\n.skin-crater .vue-dropzone .dz-preview .dz-remove {\n color: #fff !important;\n border: 2px #fff solid !important;\n}\n.skin-crater .dropdown-group.active > .dropdown-activator > a {\n color: #5851D8;\n}\n.skin-crater .dropdown-group .dropdown-activator a {\n color: #040405;\n}\n.skin-crater .dropdown-group .dropdown-activator a:hover {\n background-color: #EBF1FA;\n}\n.skin-crater .dropdown-group.has-child.toggle-arrow.active > .dropdown-activator::after {\n border-color: #5851D8 transparent transparent;\n}\n.skin-crater .dropdown-group .dropdown-container {\n color: #040405;\n background-color: #fff;\n}\n.skin-crater .dropdown-group .dropdown-container .dropdown-group-item .dropdown-item {\n color: #040405;\n background-color: transparent;\n cursor: pointer;\n}\n.skin-crater .dropdown-group .dropdown-container .dropdown-group-item .dropdown-item.active {\n color: #5851D8;\n}\n.skin-crater .dropdown-group .dropdown-container .dropdown-group-item .dropdown-item:hover {\n background-color: #EBF1FA;\n}\n.skin-crater .dropdown-group .dropdown-container .dropdown-activator::before {\n border-color: #040405 transparent transparent;\n}\n.skin-crater .dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator a {\n color: #5851D8;\n}\n.skin-crater .dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator::before {\n border-color: #5851D8 transparent transparent;\n}\n.skin-crater .dropdown-group .dropdown-item-divider {\n border-top: 1px solid #A5ACC1;\n}\n.skin-crater .btn-theme {\n background: #5851D8;\n color: #fff;\n}\n.skin-crater .btn-theme:hover {\n color: #fff;\n background: #6862dc;\n}\n.skin-crater .btn-theme-outline {\n color: #5851D8;\n border-color: #5851D8;\n}\n.skin-crater .btn-theme-outline:hover {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.skin-crater .btn-theme-outline:focus, .skin-crater .btn-theme-outline.focus {\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n.skin-crater .btn-theme-outline.disabled, .skin-crater .btn-theme-outline:disabled {\n color: #5851D8;\n background-color: transparent;\n}\n.skin-crater .btn-theme-outline:not(:disabled):not(.disabled):active, .skin-crater .btn-theme-outline:not(:disabled):not(.disabled).active, .show > .skin-crater .btn-theme-outline.dropdown-toggle {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.skin-crater .btn-theme-outline:not(:disabled):not(.disabled):active:focus, .skin-crater .btn-theme-outline:not(:disabled):not(.disabled).active:focus, .show > .skin-crater .btn-theme-outline.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n.skin-crater .form-control:focus {\n border: 1px solid #5851D8;\n}\n.skin-crater .multiselect {\n color: #040405;\n}\n.skin-crater .multiselect .multiselect__option--highlight {\n background: #F9FBFF;\n color: #040405;\n}\n.skin-crater .multiselect .multiselect__option--highlight.multiselect__option--selected {\n background: #EBF1FA;\n color: #040405;\n}\n.skin-crater .multiselect .multiselect__option--highlight.multiselect__option--selected::after {\n background: #B9C1D1;\n color: #040405;\n}\n.skin-crater .multiselect .multiselect__option--highlight::after {\n background: #B9C1D1;\n color: #040405;\n}\n.skin-crater .multiselect .multiselect__tags-wrap .multiselect__tag {\n background: #5851D8;\n color: #fff;\n}\n.skin-crater .multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon:hover {\n background: #5851D8;\n}\n.skin-crater .multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon::after {\n color: #fff;\n}\n.skin-crater .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover, .skin-crater .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover, .skin-crater .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover {\n border: 1px solid #5851D8 !important;\n}\n.skin-crater .vdp-datepicker__calendar .cell.selected {\n background: #5851D8 !important;\n color: #fff;\n}\n.skin-crater .vdp-datepicker__calendar .cell.highlighted {\n background: #bcb9ef !important;\n color: #fff;\n}\n.skin-crater .VueCarousel-dot .VueCarousel-dot-button {\n background: #A5ACC1 !important;\n}\n.skin-crater .VueCarousel-dot.VueCarousel-dot--active .VueCarousel-dot-button {\n background: #5851D8 !important;\n}\n.skin-crater .mailbox .mailbox-content .table tr td .content-subject {\n color: #040405;\n}\n.skin-crater .mailbox .mailbox-content .mailbox-content-footer .page-link {\n color: #040405;\n}\n.skin-crater .mailbox .mailbox-content .mailbox-content-footer .active .page-link {\n background-color: #5851D8;\n border-color: #5851D8;\n color: #fff;\n}\n.skin-crater .mailbox .mailbox-content .btn-favorite .active {\n color: #5851D8;\n}\n.skin-crater .mailbox-modal .mail-body .message-heading.email a {\n color: #040405;\n}\n.skin-crater .mailbox .mailbox-sidebar .sidebar-menu li.active {\n border-left: 5px solid #5851D8;\n}\n.skin-crater .mailbox .mailbox-sidebar .sidebar-menu li a {\n color: #040405;\n}\n.skin-crater .mailbox .mailbox-sidebar .left-sidebar-btn {\n color: #040405;\n}\n@media (max-width: 480px) {\n .skin-crater .header-nav .dropdown-menu {\n border: 0 !important;\n background-color: #EBF1FA !important;\n }\n}\n\nhtml, body, .site-wrapper {\n height: 100%;\n font-size: 14px;\n}\n\nbody {\n background-color: #EBF1FA;\n font-family: \"Poppins\", sans-serif;\n color: #262630;\n overflow-x: hidden;\n}\nbody i {\n font-family: \"Font Awesome 5 Free\" !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n color: #040405;\n font-weight: bold;\n}\n\na {\n color: #263B5E;\n}\na:hover, a:focus {\n color: #355282;\n text-decoration: none;\n outline: none;\n}\n\nmark, .mark {\n background-color: #efefef;\n border-radius: 5px;\n color: #040405;\n padding: 0.2em 0.4em;\n margin: 0 1px;\n}\n\ncode, .code {\n background-color: #040405;\n color: #5851D8;\n}\n\n:active, :focus, :hover {\n outline: 0;\n}\n\n[v-cloak] {\n display: none;\n}\n\n.text-default {\n color: #040405 !important;\n}\n\n@keyframes spinner {\n to {\n transform: rotate(360deg);\n }\n}\n.fa-spinner {\n animation: spinner 1.5s linear infinite;\n}\n\n.filter-section {\n background: #EBF1FA;\n position: relative;\n z-index: 2;\n padding: 30px;\n border-radius: 5px;\n}\n\n.clear-filter {\n position: absolute;\n top: 10px;\n right: 15px;\n font-size: 14px;\n line-height: 21px;\n color: #040405;\n cursor: pointer;\n}\n\n.list-add-button {\n display: flex;\n width: 100%;\n padding: 13px 10px;\n background: #EBF1FA;\n justify-content: center;\n border: none;\n outline: none;\n align-items: center;\n}\n.list-add-button .icon {\n color: #817AE3;\n}\n.list-add-button label {\n font-family: Poppins;\n font-size: 14px;\n margin: 0 0 0 10px !important;\n line-height: 14px;\n color: #817AE3;\n}\n\n.btn-container {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.swal-icon--custom {\n height: 70px !important;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #5851D8 !important;\n background-color: #5851D8 !important;\n}\n\n.avatar-cropper-btn:hover {\n background-color: #5851D8 !important;\n color: #fff;\n}\n\n.site-header {\n background-color: #5851D8;\n height: 60px;\n left: 0;\n padding: 12px 30px;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 1000;\n}\n\n.sidebar-left {\n background: #55547A;\n height: 100%;\n left: 0;\n padding: 60px 0 10px;\n position: fixed;\n top: 0;\n width: 240px;\n z-index: 30;\n}\n\n.sidebar-body {\n height: 100%;\n overflow-y: auto;\n}\n.sidebar-body::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n.sidebar-body::-webkit-scrollbar:vertical {\n width: 8px;\n}\n.sidebar-body::-webkit-scrollbar:horizontal {\n height: 8px;\n}\n.sidebar-body::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid rgba(255, 255, 255, 0);\n background-color: rgba(255, 255, 255, 0.3);\n}\n.sidebar-body::-webkit-scrollbar-track {\n background-color: rgba(0, 0, 0, 0);\n border-radius: 8px;\n}\n\n.mobile-menu-overlay {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 29;\n background: rgba(48, 75, 88, 0.5);\n display: none;\n}\n\n.layout-default .main-content,\n.layout-icon-sidebar .main-content {\n padding: 90px 30px 10px 270px;\n min-height: calc(100% - 39px);\n}\n\n.site-footer {\n background-color: #fff;\n color: #818a91;\n font-size: 13px;\n font-weight: normal;\n padding: 10px 30px 10px 255px;\n}\n.site-footer a {\n color: #263B5E;\n}\n\n.page-header {\n margin-bottom: 30px;\n position: relative;\n}\n.page-header p {\n font-size: 13px;\n}\n.page-header select {\n border: none;\n}\n.page-header .breadcrumb {\n background: none;\n padding: 0;\n}\n.page-header .page-actions {\n position: absolute;\n right: 0;\n top: 50%;\n -webkit-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n transform: translateY(-50%);\n margin: auto;\n}\n\n.template-container {\n height: 100%;\n}\n\n@media (max-width: 767px) {\n .site-header {\n padding: 12px 15px;\n }\n\n .sidebar-left {\n left: -240px;\n transition: left 0.3s ease;\n }\n\n .sidebar-open .sidebar-left {\n left: 0;\n }\n\n .sidebar-open .mobile-menu-overlay {\n display: block;\n }\n\n .layout-default .main-content,\n.layout-icon-sidebar .main-content {\n padding-left: 15px;\n padding-right: 15px;\n }\n\n .site-footer {\n padding-left: 15px;\n }\n}\n.sidebar-left .menu-group {\n margin-bottom: 40px;\n}\n.sidebar-left .menu-group:first-child {\n margin-top: 29px;\n}\n.sidebar-left .menu-item {\n cursor: pointer;\n padding: 10px 0px 11px 0px;\n display: block;\n}\n.sidebar-left .menu-item .menu-text {\n font-family: Poppins;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #040405;\n}\n.sidebar-left .menu-item .menu-icon {\n margin-left: 25px;\n color: #A5ACC1;\n width: 30px;\n margin-left: 25px;\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.sidebar-left .active {\n background-color: #F9FBFF;\n position: relative;\n}\n.sidebar-left .active::after {\n position: absolute;\n height: 100%;\n content: \"\";\n left: 0;\n top: 0;\n width: 3px;\n background-color: #5851D8;\n}\n.sidebar-left .active .menu-text {\n color: #5851D8 !important;\n}\n.sidebar-left .active .menu-icon {\n color: #5851D8 !important;\n}\n\n.brand-main img {\n height: 25px;\n}\n\n.nav-toggle {\n background-color: #040405;\n border-radius: 2px;\n color: #fff;\n display: none;\n font-size: 14px;\n line-height: 9px;\n padding: 6px;\n}\n.nav-toggle:active, .nav-toggle:focus, .nav-toggle:visited {\n color: #fff;\n}\n\n.action-list {\n float: right;\n list-style: none;\n margin: 0;\n}\n.action-list li {\n display: block;\n float: left;\n position: relative;\n height: 36px;\n margin: 0;\n padding: 0 4px;\n}\n.action-list li.action-item a {\n padding: 11px;\n}\n.action-list li .icon {\n color: #9EA9C4;\n}\n.action-list li a {\n background-color: #040405;\n border-radius: 2px;\n color: #fff;\n display: inline-block;\n font-size: 14px !important;\n line-height: 14px !important;\n padding: 11px !important;\n}\n.action-list li a:hover {\n background-color: #0f0f13;\n color: #fff;\n}\n.action-list .avatar {\n padding: 0 !important;\n background-color: transparent;\n}\n.action-list .avatar img {\n width: 36px;\n height: 36px;\n border-radius: 2px;\n}\n.action-list .dropdown-group {\n background-color: #040405;\n}\n.action-list .dropdown-group i {\n text-align: center;\n width: auto;\n}\n.action-list .dropdown-group.has-child > .dropdown-activator::after {\n content: none;\n}\n.action-list .dropdown-group .dropdown-group-item i {\n width: 25px;\n}\n.action-list .notification-dropdown {\n padding: 5px !important;\n}\n.action-list .notification-dropdown .dropdown-header {\n border-bottom: 1px solid #A5ACC1;\n color: #5851D8;\n padding: 3px 10px 8px;\n margin-bottom: 0;\n}\n\n@media (max-width: 767px) {\n .nav-toggle {\n display: inline-block;\n margin-left: 10px;\n }\n\n .brand-main {\n float: left;\n }\n .brand-main img {\n height: 36px;\n margin-bottom: 3px;\n }\n}\n.side-nav {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.side-nav .collapse-group .collapse-group-item .collapse-item-title {\n display: block;\n}\n.side-nav .collapse-group .collapse-group-item .collapse-item-title > a > .icon-fa.arrow {\n float: right;\n line-height: 1.42857;\n}\n.side-nav .collapse-group .collapse-group-item .collapse-item-title > a > .icon-fa.arrow:before {\n content: \"\";\n}\n.side-nav .collapse-group .collapse-group-item a {\n color: #fff;\n display: block;\n font-size: 14px;\n padding: 12px 12px 12px 30px;\n position: relative;\n text-decoration: none;\n}\n.side-nav .collapse-group .collapse-group-item a:hover {\n background-color: #1b1b21;\n}\n.side-nav .collapse-group .collapse-group-item .icon {\n width: 30px;\n color: #9EA9C4;\n}\n.side-nav .collapse-group .collapse-group-item.active > .collapse-item-title > a .icon {\n color: #5851D8;\n}\n.side-nav .collapse-group .collapse-group-item.active > .collapse-item-title > a .icon > .icon-fa.arrow:before {\n content: \"\";\n}\n.side-nav .collapse-group .collapse-group-item .collapse-group-items {\n background-color: #0b0b0e;\n padding: 0;\n}\n.side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items {\n background-color: #16161c;\n}\n.side-nav .collapse-group .collapse-group-item .collapse-group-items .collapse-group-items .collapse-group-items {\n background-color: #1d1d24;\n}\n.side-nav .collapse-group .collapse-group-item .collapse-group-items a.active {\n color: #5851D8;\n}\n\n.base-date-input {\n width: 100%;\n position: relative;\n}\n.base-date-input .date-field {\n width: 100%;\n height: 40px;\n background: #FFFFFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n border-radius: 5px;\n display: inline-block;\n padding: 0px 6px 0px 40px;\n font-size: 1rem;\n line-height: 1.4;\n cursor: pointer;\n}\n.base-date-input .date-field:focus {\n border: 1px solid #817AE3;\n}\n.base-date-input .date-field.invalid {\n border: 1px solid #FB7178 !important;\n}\n\n.vdp-datepicker__calendar-button {\n position: absolute;\n width: 13px;\n height: 18px;\n color: #B9C1D1;\n font-style: normal;\n font-weight: 900;\n font-size: 14px;\n line-height: 16px;\n top: 50%;\n left: 20px;\n transform: translate(-50%, -50%);\n}\n.vdp-datepicker__calendar-button .icon-fa {\n color: #B9C1D1;\n}\n\n.base-input {\n width: 100%;\n position: relative;\n}\n.base-input .left-icon {\n position: absolute;\n width: 13px;\n height: 18px;\n min-width: 40px;\n color: #B9C1D1;\n font-style: normal;\n font-weight: 900;\n font-size: 14px;\n line-height: 16px;\n top: 50%;\n left: 20px;\n z-index: 1;\n transform: translate(-50%, -50%);\n}\n.base-input .right-input-group-text {\n position: absolute;\n width: 13px;\n height: 18px;\n min-width: 18px;\n color: #B9C1D1;\n font-style: normal;\n font-weight: 900;\n font-size: 14px;\n line-height: 16px;\n top: 50%;\n right: 0px;\n z-index: 1;\n transform: translate(-50%, -50%);\n}\n.base-input .right-icon {\n position: absolute;\n width: 13px;\n height: 18px;\n min-width: 18px;\n color: #B9C1D1;\n font-style: normal;\n font-weight: 900;\n font-size: 14px;\n line-height: 16px;\n top: 50%;\n right: 0px;\n z-index: 1;\n transform: translate(-50%, -50%);\n}\n.base-input .small-input {\n max-width: 100px;\n}\n.base-input .input-field {\n width: 100%;\n height: 40px;\n padding: 8px 13px;\n text-align: left;\n background: #FFFFFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n border-radius: 5px;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 21px;\n}\n.base-input .input-field.v-money {\n font-family: Arial, Helvetica, sans-serif !important;\n}\n.base-input .input-field::placeholder {\n font-family: Poppins;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #B9C1D1;\n}\n.base-input .input-field:focus {\n border: 1px solid #817AE3;\n}\n.base-input .input-field.invalid {\n border: 1px solid #FB7178 !important;\n}\n.base-input .input-field.disabled {\n background: #EBF1FA !important;\n color: #A5ACC1 !important;\n}\n.base-input .input-field-left-icon {\n padding-left: 35px;\n}\n.base-input .input-field-right-icon {\n padding-right: 35px;\n}\n\n.base-button {\n height: 40px;\n padding: 6px 20px;\n font-size: 14px;\n font-weight: 500;\n text-align: center;\n display: flex;\n align-items: center;\n white-space: nowrap;\n line-height: 14px;\n}\n.base-button.btn-lg, .btn-group-lg > .base-button.btn {\n height: 45px;\n font-size: 15px;\n font-weight: 500;\n text-align: center;\n}\n.base-button.btn-sm, .btn-group-sm > .base-button.btn {\n height: 34px;\n padding: 5px 15px;\n font-size: 12px;\n font-weight: 500;\n text-align: center;\n}\n.base-button.btn-danger {\n color: #ffffff !important;\n}\n.base-button.btn-outline-danger:hover {\n color: #ffffff !important;\n}\n.base-button .icon-button {\n text-align: center;\n}\n.base-button .icon-left {\n margin-right: 10px !important;\n}\n.base-button .icon-right {\n margin-left: 10px !important;\n}\n.base-button.btn-cursor-not-allowed {\n cursor: not-allowed !important;\n}\n.base-button .icon {\n margin-right: 5px;\n}\n\n.search-select {\n position: relative;\n width: 100%;\n}\n.search-select .activator {\n position: relative;\n width: 100%;\n cursor: pointer;\n}\n.search-select .selector-menu {\n display: flex;\n flex-direction: column;\n position: absolute;\n z-index: 100;\n width: 100%;\n top: 0;\n background: #FFFFFF;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n border-radius: 5px;\n}\n.search-select .selector-menu-above {\n top: unset !important;\n bottom: 100% !important;\n}\n\n.base-text-area {\n width: 100%;\n}\n.base-text-area.text-area-field {\n width: 100%;\n padding: 8px 13px;\n text-align: left;\n background: #FFFFFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n border-radius: 5px;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n}\n.base-text-area.text-area-field::placeholder {\n font-family: Poppins;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #B9C1D1;\n}\n.base-text-area.text-area-field:focus {\n border: 1px solid #817AE3;\n}\n.base-text-area.text-area-field.invalid {\n border: 1px solid #FB7178 !important;\n}\n.base-text-area.text-area-field.disabled {\n background: #EBF1FA !important;\n color: #A5ACC1 !important;\n}\n.base-text-area.text-area-field-icon {\n padding-left: 35px;\n}\n\n.base-switch input[type=checkbox] {\n height: 0;\n width: 0;\n visibility: hidden;\n}\n.base-switch label {\n cursor: pointer;\n text-indent: -9999px;\n width: 35px;\n height: 16px;\n background: #fff;\n border: 1px solid #B9C1D1;\n display: block;\n border-radius: 16px;\n position: relative;\n}\n.base-switch label:after {\n content: \"\";\n position: absolute;\n top: -3px;\n left: 0px;\n width: 20px;\n height: 20px;\n background: #A5ACC1;\n border-radius: 15px;\n transition: 0.3s;\n}\n.base-switch input:checked + label {\n background: rgba(88, 81, 216, 0.2);\n}\n.base-switch input:checked + label:after {\n left: calc(100% - 0px);\n transform: translateX(-100%);\n background: #5851D8;\n}\n.base-switch label:active:after {\n width: 20px;\n}\n\n@keyframes ball-scale-ripple-multiple {\n 0% {\n transform: scale(0.1);\n opacity: 1;\n }\n 70% {\n transform: scale(1);\n opacity: 0.7;\n }\n 100% {\n opacity: 0;\n }\n}\n.loader {\n width: 100%;\n position: relative;\n min-height: 500px;\n}\n\n.ball-scale-ripple-multiple {\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n transform: translateY(-25px);\n top: 60%;\n left: 40%;\n transform: translateY(-25px);\n}\n.ball-scale-ripple-multiple > div:nth-child(0) {\n animation-delay: -0.8s;\n}\n.ball-scale-ripple-multiple > div:nth-child(1) {\n animation-delay: -0.6s;\n}\n.ball-scale-ripple-multiple > div:nth-child(2) {\n animation-delay: -0.4s;\n}\n.ball-scale-ripple-multiple > div:nth-child(3) {\n animation-delay: -0.2s;\n}\n.ball-scale-ripple-multiple > div {\n animation-fill-mode: both;\n position: absolute;\n top: -2px;\n left: -26px;\n width: 50px;\n height: 50px;\n border-radius: 100%;\n border: 2px solid #817AE3;\n animation: ball-scale-ripple-multiple 1.25s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8);\n}\n\n.base-prefix-input {\n display: flex;\n position: relative;\n width: 100%;\n height: 40px;\n padding: 2px 2px;\n flex-direction: row;\n background: #FFFFFF;\n border: 1px solid #EBF1FA;\n border-radius: 5px;\n}\n.base-prefix-input .icon {\n width: 13px;\n height: 18px;\n color: #B9C1D1;\n font-style: normal;\n font-weight: 900;\n font-size: 14px;\n line-height: 16px;\n margin-top: 17px;\n margin-left: 20px;\n z-index: 1;\n transform: translate(-50%, -50%);\n}\n.base-prefix-input p {\n padding: 0 0 0 0;\n margin: 0 0 0 0;\n}\n.base-prefix-input .prefix-label {\n display: flex;\n height: 18px;\n color: #55547A;\n font-weight: 500;\n font-size: 14px;\n line-height: 16px;\n padding: 9px 2px 9px 10px;\n}\n.base-prefix-input .prefix-input-field {\n width: 100%;\n padding: 8px 13px;\n padding-left: 1px;\n text-align: left;\n background: #FFFFFF;\n border: none;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 21px;\n}\n\n.tooltip {\n display: block !important;\n z-index: 10000;\n}\n.tooltip .tooltip-inner {\n background: black;\n color: white;\n border-radius: 16px;\n padding: 5px 10px 4px;\n}\n.tooltip .tooltip-arrow {\n width: 0;\n height: 0;\n border-style: solid;\n position: absolute;\n margin: 5px;\n border-color: black;\n z-index: 1;\n}\n.tooltip[x-placement^=top] {\n margin-bottom: 5px;\n}\n.tooltip[x-placement^=top] .tooltip-arrow {\n border-width: 5px 5px 0 5px;\n border-left-color: transparent !important;\n border-right-color: transparent !important;\n border-bottom-color: transparent !important;\n bottom: -5px;\n left: calc(50% - 5px);\n margin-top: 0;\n margin-bottom: 0;\n}\n.tooltip[x-placement^=bottom] {\n margin-top: 5px;\n}\n.tooltip[x-placement^=bottom] .tooltip-arrow {\n border-width: 0 5px 5px 5px;\n border-left-color: transparent !important;\n border-right-color: transparent !important;\n border-top-color: transparent !important;\n top: -5px;\n left: calc(50% - 5px);\n margin-top: 0;\n margin-bottom: 0;\n}\n.tooltip[x-placement^=right] {\n margin-left: 5px;\n}\n.tooltip[x-placement^=right] .tooltip-arrow {\n border-width: 5px 5px 5px 0;\n border-left-color: transparent !important;\n border-top-color: transparent !important;\n border-bottom-color: transparent !important;\n left: -5px;\n top: calc(50% - 5px);\n margin-left: 0;\n margin-right: 0;\n}\n.tooltip[x-placement^=left] {\n margin-right: 5px;\n}\n.tooltip[x-placement^=left] .tooltip-arrow {\n border-width: 5px 0 5px 5px;\n border-top-color: transparent !important;\n border-right-color: transparent !important;\n border-bottom-color: transparent !important;\n right: -5px;\n top: calc(50% - 5px);\n margin-left: 0;\n margin-right: 0;\n}\n.tooltip.popover .popover-inner {\n background: #f9f9f9;\n color: black;\n padding: 24px;\n border-radius: 5px;\n box-shadow: 0 5px 30px rgba(0, 0, 0, 0.1);\n}\n.tooltip.popover .popover-arrow {\n border-color: #f9f9f9;\n}\n.tooltip[aria-hidden=true] {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.15s, visibility 0.15s;\n}\n.tooltip[aria-hidden=false] {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.15s;\n}\n\n.btn {\n font-family: \"Poppins\", sans-serif;\n}\n.btn.btn-pressable:active {\n transform: translate(0px, 3px);\n -webkit-transform: translate(0px, 3px);\n}\n\n.btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus {\n outline: none;\n}\n\n.btn-default {\n border: 1px solid #B9C1D1;\n background-color: #fff;\n}\n.btn-default:hover, .btn-default:active, .btn-default:focus {\n background-color: #EBF1FA;\n}\n\n.btn-outline-default {\n border: 1px solid #B9C1D1;\n background-color: #fff;\n}\n.btn-outline-default:hover, .btn-outline-default:active, .btn-outline-default:focus {\n background-color: #EBF1FA;\n}\n\n.btn-theme {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-theme:hover {\n color: #fff;\n background-color: #3a32d1;\n border-color: #352dc9;\n}\n.btn-theme:focus, .btn-theme.focus {\n color: #fff;\n background-color: #3a32d1;\n border-color: #352dc9;\n box-shadow: 0 0 0 0.2rem rgba(113, 107, 222, 0.5);\n}\n.btn-theme.disabled, .btn-theme:disabled {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-theme:not(:disabled):not(.disabled):active, .btn-theme:not(:disabled):not(.disabled).active, .show > .btn-theme.dropdown-toggle {\n color: #fff;\n background-color: #352dc9;\n border-color: #322bbf;\n}\n.btn-theme:not(:disabled):not(.disabled):active:focus, .btn-theme:not(:disabled):not(.disabled).active:focus, .show > .btn-theme.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(113, 107, 222, 0.5);\n}\n\n.btn-outline-theme {\n color: #5851D8;\n border-color: #5851D8;\n}\n.btn-outline-theme:hover {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-outline-theme:focus, .btn-outline-theme.focus {\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n.btn-outline-theme.disabled, .btn-outline-theme:disabled {\n color: #5851D8;\n background-color: transparent;\n}\n.btn-outline-theme:not(:disabled):not(.disabled):active, .btn-outline-theme:not(:disabled):not(.disabled).active, .show > .btn-outline-theme.dropdown-toggle {\n color: #fff;\n background-color: #5851D8;\n border-color: #5851D8;\n}\n.btn-outline-theme:not(:disabled):not(.disabled):active:focus, .btn-outline-theme:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-theme.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(88, 81, 216, 0.5);\n}\n\n.btn-theme-light {\n color: #fff;\n background-color: #817AE3;\n border-color: #817AE3;\n}\n.btn-theme-light:hover {\n color: #fff;\n background-color: #635adc;\n border-color: #5950da;\n}\n.btn-theme-light:focus, .btn-theme-light.focus {\n color: #fff;\n background-color: #635adc;\n border-color: #5950da;\n box-shadow: 0 0 0 0.2rem rgba(148, 142, 231, 0.5);\n}\n.btn-theme-light.disabled, .btn-theme-light:disabled {\n color: #fff;\n background-color: #817AE3;\n border-color: #817AE3;\n}\n.btn-theme-light:not(:disabled):not(.disabled):active, .btn-theme-light:not(:disabled):not(.disabled).active, .show > .btn-theme-light.dropdown-toggle {\n color: #fff;\n background-color: #5950da;\n border-color: #4f45d8;\n}\n.btn-theme-light:not(:disabled):not(.disabled):active:focus, .btn-theme-light:not(:disabled):not(.disabled).active:focus, .show > .btn-theme-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(148, 142, 231, 0.5);\n}\n\n.btn-rounded {\n border-radius: 20px;\n}\n\n.btn i {\n width: 1.2em;\n text-align: left;\n}\n\n.btn-icon {\n padding: 0.6rem;\n line-height: 1em;\n}\n.btn-icon i {\n text-align: center;\n}\n\n.btn-xs {\n font-size: 12px;\n padding: 3px 10px;\n}\n\n.btn-full {\n width: 100%;\n}\n\n.ladda-button {\n overflow: visible !important;\n}\n\n.btn-success, .btn-warning, .btn-info {\n color: #fff;\n}\n.btn-success:hover, .btn-warning:hover, .btn-info:hover {\n color: #fff;\n}\n\n.btn-group .btn-group .dropdown-group .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .btn-group .dropdown-group .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:last-child) .dropdown-group .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group .dropdown-group .btn {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.btn-crater {\n width: 148px;\n height: 45px;\n border-radius: 5px;\n font-family: poppins;\n font-weight: 600;\n font-size: 15px;\n}\n.btn-crater .btn-label {\n margin: 0 0 0 0;\n}\n\n.btn-crater:focus {\n outline: 10px auto #817AE3;\n}\n\n.btn-crater:disabled {\n opacity: 0.5;\n}\n\n.btn-crater-default {\n color: #FFFFFF;\n background: #5851D8;\n border: 1px solid #5851D8;\n}\n.btn-crater-default .icon-fa-spinner {\n color: #ffffff;\n}\n\n.btn-crater-default:hover {\n background: #635BF2;\n}\n\n.btn-crater-hollow {\n border: 1px solid #5851D8;\n color: #5851D8;\n background: #ffffff;\n}\n.btn-crater-hollow .icon-fa-spinner {\n color: #5851D8;\n}\n\n.btn-crater-hollow:hover {\n opacity: 0.9;\n color: #5851D8;\n}\n\n.form-control:focus {\n border-color: #ffde00;\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 125, 204, 0.25);\n box-shadow: 0 0 0 0.2rem #ffde0029;\n}\n\n.card {\n margin-bottom: 1.5rem;\n border: none;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n}\n.card .card-header {\n position: relative;\n border-bottom: 1px solid #EBF1FA;\n}\n.card .card-header::after {\n display: block;\n clear: both;\n content: \"\";\n}\n.card .card-header i {\n width: 1.3em;\n}\n.card .card-header h6 {\n font-size: 1rem;\n font-weight: normal;\n margin: 0;\n}\n.card .card-header h3 {\n font-weight: normal;\n margin: 0;\n font-size: 1.25rem;\n}\n.card .card-header h5 {\n margin: 0;\n font-weight: normal;\n}\n.card .card-header.bg-dark {\n background-color: #55547A;\n color: #fff;\n}\n.card .card-header .caption {\n display: inline-block;\n padding: 8px 0;\n}\n.card .card-header .actions {\n float: right;\n margin: auto;\n}\n.card .card-body {\n padding: 30px;\n}\n.card .section-semi-title {\n font-size: 1.1rem;\n text-transform: uppercase;\n font-weight: 400;\n}\n.card .card-footer {\n background-color: #fff;\n}\n.card.with-tabs .card-header {\n padding: 0;\n}\n.card.with-tabs .card-header .caption {\n padding: 20px;\n}\n.card.with-tabs .card-header .actions {\n padding-right: 20px;\n}\n.card.with-tabs .card-header .nav-tabs {\n border-bottom: none;\n}\n.card.with-tabs .card-header .nav-link {\n padding: 1em 1.5em;\n}\n.card .bg-primary h3, .card .bg-primary h5, .card .bg-primary h6,\n.card .bg-info h3,\n.card .bg-info h5,\n.card .bg-info h6,\n.card .bg-primary h3,\n.card .bg-primary h5,\n.card .bg-primary h6,\n.card .bg-dark h3,\n.card .bg-dark h5,\n.card .bg-dark h6,\n.card .bg-success h3,\n.card .bg-success h5,\n.card .bg-success h6,\n.card .bg-danger h3,\n.card .bg-danger h5,\n.card .bg-danger h6,\n.card .bg-warning h3,\n.card .bg-warning h5,\n.card .bg-warning h6 {\n color: #fff;\n}\n\n@media (max-width: 992px) {\n .card .card-body {\n padding: 15px;\n }\n}\n.tabs .tab-content {\n margin-top: 1.2rem;\n}\n\n.tabs-default .nav-link.active {\n background-color: #55547A;\n color: #5851D8;\n}\n.tabs-default .nav-link.active:hover, .tabs-default .nav-link.active:active, .tabs-default .nav-link.active:focus {\n background-color: #55547A;\n color: #5851D8;\n}\n.tabs-default .nav-link:hover {\n border: 1px solid #55547A;\n}\n.tabs-default .nav-tabs {\n border-bottom: 1px solid #55547A;\n}\n\n.tabs-primary .nav-link.active {\n background-color: #5851D8;\n color: #fff;\n}\n.tabs-primary .nav-link.active:hover, .tabs-primary .nav-link.active:active, .tabs-primary .nav-link.active:focus {\n background-color: #5851D8;\n color: #fff;\n}\n.tabs-primary .nav-link:hover {\n border: 1px solid #5851D8;\n}\n.tabs-primary .nav-tabs {\n border-bottom: 1px solid #5851D8;\n}\n\n.tabs-simple .nav-link {\n border: 0;\n background-color: transparent;\n border-radius: 0;\n color: #263B5E;\n}\n.tabs-simple .nav-link:hover, .tabs-simple .nav-link:active, .tabs-simple .nav-link:focus {\n border-bottom: 3px solid #5851D8;\n border-color: #d0cef4;\n}\n.tabs-simple .nav-link.active {\n background-color: transparent;\n border-bottom: 3px solid #5851D8;\n color: #040405;\n}\n.tabs-simple .nav-link.active:hover, .tabs-simple .nav-link.active:active, .tabs-simple .nav-link.active:focus {\n border-bottom: 3px solid #5851D8;\n border-color: #5851D8;\n color: #040405;\n}\n\n.tabs-vertical::after {\n display: block;\n clear: both;\n content: \"\";\n}\n.tabs-vertical .nav-tabs {\n float: left;\n border-right: 1px solid #55547A;\n border-bottom: none;\n overflow: hidden;\n margin-right: 1.2rem;\n display: block;\n}\n.tabs-vertical .nav-tabs li {\n float: none;\n margin-right: -1px;\n margin-bottom: 0;\n}\n.tabs-vertical .nav-tabs li a {\n margin-right: 0;\n border-radius: 4px 0 0 4px;\n margin-bottom: 0.2rem;\n background-color: #fff;\n border-color: transparent;\n border-right-color: #55547A;\n}\n.tabs-vertical .nav-tabs li a:hover, .tabs-vertical .nav-tabs li a:active, .tabs-vertical .nav-tabs li a:focus {\n background-color: #fff;\n border-color: #55547A;\n}\n.tabs-vertical .nav-tabs li a.active {\n background-color: #55547A;\n color: #5851D8;\n}\n.tabs-vertical .nav-tabs li a.active:hover, .tabs-vertical .nav-tabs li a.active:active, .tabs-vertical .nav-tabs li a.active:focus {\n background-color: #55547A;\n color: #5851D8;\n}\n.tabs-vertical.tabs-primary .nav-tabs {\n border-right: 1px solid #5851D8;\n}\n.tabs-vertical.tabs-primary .nav-tabs li a {\n border-right-color: #5851D8;\n}\n.tabs-vertical.tabs-primary .nav-tabs li a:hover, .tabs-vertical.tabs-primary .nav-tabs li a:active, .tabs-vertical.tabs-primary .nav-tabs li a:focus {\n background-color: #fff;\n border-color: #5851D8;\n}\n.tabs-vertical.tabs-primary .nav-tabs li a.active {\n background-color: #5851D8;\n color: #fff;\n}\n.tabs-vertical.tabs-primary .nav-tabs li a.active:hover, .tabs-vertical.tabs-primary .nav-tabs li a.active:active, .tabs-vertical.tabs-primary .nav-tabs li a.active:focus {\n background-color: #5851D8;\n color: #fff;\n}\n.tabs-vertical.tabs-simple .nav-tabs {\n border-right: 1px solid #ddd;\n}\n.tabs-vertical.tabs-simple .nav-tabs li {\n margin: 0;\n}\n.tabs-vertical.tabs-simple .nav-tabs li a {\n background: transparent;\n border-right: 3px solid transparent;\n border-radius: 0;\n}\n.tabs-vertical.tabs-simple .nav-tabs li a.active {\n border-bottom: 0;\n color: #040405;\n border-right: 3px solid #5851D8;\n background: transparent;\n}\n.tabs-vertical.tabs-simple .nav-tabs li a:hover, .tabs-vertical.tabs-simple .nav-tabs li a:active, .tabs-vertical.tabs-simple .nav-tabs li a:focus {\n background-color: transparent;\n border-right: 3px solid #5851D8;\n border-bottom: 0;\n}\n\n.panel {\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel .panel-heading a {\n text-decoration: none;\n}\n.panel .panel-title {\n display: block;\n padding: 1rem 1.25rem;\n}\n.panel .panel-content {\n padding: 0 1.25rem;\n}\n\n.panel-group .panel + .panel {\n margin-top: 10px;\n}\n\n.tabs {\n width: 100%;\n padding-left: 0px;\n display: flex;\n align-items: center;\n list-style: none;\n border-bottom: 2px solid #EBF1FA;\n}\n\n.tab {\n display: block;\n padding: 10px 30px;\n color: #A5ACC1;\n font-style: normal;\n font-size: 14px;\n line-height: 21px;\n position: relative;\n white-space: nowrap;\n cursor: pointer;\n}\n.tab .tab-link {\n color: #A5ACC1;\n}\n.tab::after {\n width: 100%;\n background: #A5ACC1;\n position: absolute;\n content: \"\";\n bottom: -2px;\n left: 0;\n height: 3px;\n opacity: 0;\n transition: 0.3s;\n}\n.tab:hover::after {\n display: block;\n content: \"\";\n opacity: 1;\n}\n.tab .a-active {\n font-weight: 500;\n color: #263B5E !important;\n}\n.tab .a-active::after {\n height: 3px;\n display: block;\n width: 100%;\n background: #5851D8;\n position: absolute;\n content: \"\";\n bottom: -2px;\n left: 0;\n}\n.tab .router-link-exact-active.active::after {\n height: 3px;\n display: block;\n width: 100%;\n background: #5851D8;\n position: absolute;\n content: \"\";\n bottom: -2px;\n left: 0;\n}\n.tab .router-link-exact-active.active {\n font-weight: 500;\n color: #263B5E !important;\n}\n\n.table th,\n.table td {\n color: #040405;\n font-weight: 300;\n border-top: none;\n font-size: 15px;\n vertical-align: middle;\n}\n.table td {\n border-right: 0;\n border-left: 0;\n}\n.table th {\n text-transform: uppercase;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 500;\n position: relative;\n color: #263B5E;\n letter-spacing: 0.3px;\n}\n.table .table__actions {\n display: flex;\n}\n.table .table__actions .btn {\n padding: 2px 0.5rem;\n}\n.table .table__actions a:not(:last-child) {\n border-right: 1px solid #d9d9d9;\n margin-right: 8px;\n padding-right: 8px;\n}\n.table thead th {\n border: 0;\n position: relative;\n top: 25px;\n}\n.table .table-component__table__body {\n position: relative;\n}\n.table .table-component__table__body tr:first-child td {\n border-top: 0;\n}\n.table .table-component__table__body tr {\n border-radius: 10px;\n transition: all ease-in-out 0.2s;\n}\n.table .table-component__table__body tr:hover {\n box-shadow: 0px 5px 15px 2px rgba(0, 0, 0, 0.03);\n}\n.table .table-component__table__body td {\n font-size: 15px;\n padding: 25px 15px;\n height: 80px;\n background: #ffffff;\n}\n.table .table-component__table__body td:first-child {\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n}\n.table .table-component__table__body td:last-child {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n}\n.table td.primary {\n font-weight: 400;\n font-size: 16px;\n}\n.table .action-dropdown .dropdown-container {\n margin: 10px 5px 0 0;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px;\n border: none;\n}\n.table .action-dropdown .dropdown-item {\n justify-content: space-between;\n color: #040405;\n padding: 10px 20px;\n}\n\n.card-body .table {\n margin-top: -10px;\n}\n.card-body .table th {\n border-top: none;\n}\n\n.table-component {\n display: flex;\n flex-direction: column;\n position: relative;\n margin-top: -25px;\n min-height: 300px;\n}\n\n.table-component__filter {\n align-self: flex-end;\n position: relative;\n}\n\n.table-component__filter__field {\n padding: 0.15em 1.25em 0.15em 0.75em;\n border: solid 1px #e0e0e0;\n font-size: 15px;\n border-radius: 3px;\n}\n\n.table-component__filter__clear {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2em;\n color: #007593;\n font-weight: bold;\n cursor: pointer;\n}\n\n.table-component__filter__field:focus {\n outline: 0;\n border-color: #5851D8;\n}\n\n.table-component__table-wrapper {\n width: 100%;\n}\n\n.table-component__table {\n min-width: 100%;\n border-collapse: separate;\n table-layout: auto;\n margin-bottom: 0;\n border-spacing: 0 15px;\n}\n\n.table-component__table__caption {\n position: absolute;\n top: auto;\n left: -10000px;\n overflow: hidden;\n width: 1px;\n height: 1px;\n}\n\n.table-component__table th,\n.table-component__table td {\n padding: 0.75em 1.25em;\n vertical-align: top;\n text-align: left;\n}\n\n.table-component__message {\n color: #999;\n text-align: center;\n padding-top: 10px;\n}\n\n.table-component__th--sort,\n.table-component__th--sort-asc,\n.table-component__th--sort-desc {\n cursor: pointer;\n user-select: none;\n}\n\n.table-component__th--sort-asc:after,\n.table-component__th--sort-desc:after {\n position: absolute;\n left: 0.25em;\n display: inline-block;\n color: #bbb;\n}\n\n.table-component__th--sort-asc:after {\n content: \"↑\";\n}\n\n.table-component__th--sort-desc:after {\n content: \"↓\";\n}\n\n.table-component .pagination {\n justify-content: flex-end !important;\n margin-top: 10px;\n}\n.table-component .pagination .page-item {\n overflow: hidden;\n}\n.table-component .pagination .page-item.active .page-link {\n color: #fff !important;\n}\n.table-component .pagination a i {\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n background-color: #fff;\n border: 1px solid #dee2e6;\n font-style: normal;\n cursor: pointer;\n}\n.table-component .pagination a.disabled i {\n color: #d9d9d9;\n pointer-events: none;\n cursor: auto;\n}\n\ntable.full-width {\n width: 100%;\n}\n\n.table-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n list-style: none;\n border-bottom: 2px solid #EBF1FA;\n height: 40px;\n position: relative;\n}\n.table-actions .table-actions-button {\n display: block;\n font-weight: 500;\n cursor: pointer;\n color: #817AE3;\n user-select: none;\n}\n.table-actions .table-actions-button::after {\n vertical-align: 0.1em;\n}\n.table-actions .dropdown-group.active .dropdown-container {\n z-index: 10;\n}\n.table-actions .table-stats {\n margin: 0;\n}\n\n.selectall {\n position: absolute;\n cursor: pointer;\n top: 47px;\n left: 35px;\n z-index: 10;\n}\n\n.table-component td > span:first-child {\n background: #EBF1FA;\n color: #55547A;\n display: none;\n font-size: 10px;\n font-weight: bold;\n padding: 5px;\n left: 0;\n position: absolute;\n text-transform: uppercase;\n top: 0;\n}\n\n.select-all-label {\n display: none !important;\n}\n\n@media (max-width: 768px) {\n .select-all-label {\n display: inline !important;\n color: #55547A;\n cursor: pointer;\n }\n\n .selectall {\n top: 20px;\n }\n\n .table-component .dropdown-group {\n position: absolute;\n visibility: visible;\n top: 15px;\n right: 10px;\n }\n .table-component thead {\n left: -9999px;\n position: absolute;\n visibility: hidden;\n }\n .table-component tr {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n margin-top: 50px;\n position: relative;\n }\n .table-component td {\n margin: 0 -1px -1px 0;\n padding-top: 40px !important;\n position: relative;\n width: 50%;\n left: 0;\n border: 1px solid #EBF1FA !important;\n }\n .table-component td:not(:first-child) {\n text-align: center !important;\n }\n .table-component td:first-child {\n display: flex;\n justify-content: space-between;\n flex: 1 100%;\n height: 50px;\n padding-top: 25px !important;\n align-items: center;\n border-bottom-left-radius: 0px !important;\n border-top-left-radius: 5px !important;\n border-top-right-radius: 5px !important;\n }\n .table-component td:last-child {\n position: unset;\n visibility: hidden;\n height: 0px !important;\n padding: 0px !important;\n }\n .table-component td:nth-last-child(3) {\n border-bottom-left-radius: 5px !important;\n }\n .table-component td:nth-last-child(2) {\n border-bottom-right-radius: 5px !important;\n }\n .table-component td > span:first-child {\n display: block;\n }\n .table-component .dropdown-container {\n right: 0;\n left: 120px;\n }\n}\n.hamburger {\n display: inline-block;\n cursor: pointer;\n transition-property: opacity, filter;\n transition-duration: 0.15s;\n transition-timing-function: linear;\n font: inherit;\n color: inherit;\n text-transform: none;\n background-color: transparent;\n border: 0;\n margin: 0;\n overflow: visible;\n}\n\n.hamburger-box {\n width: 24px;\n height: 24px;\n display: inline-block;\n position: relative;\n}\n\n.hamburger-inner {\n display: block;\n top: 50%;\n left: 4.5px;\n right: 4.5px;\n margin-top: -2px;\n}\n\n.hamburger-inner,\n.hamburger-inner::before,\n.hamburger-inner::after {\n height: 2px;\n background-color: #fff;\n border-radius: 2px;\n position: absolute;\n transition-property: transform;\n transition-duration: 0.15s;\n transition-timing-function: ease;\n}\n\n.hamburger-inner::before,\n.hamburger-inner::after {\n content: \"\";\n display: block;\n width: 100%;\n}\n\n.hamburger-inner::before {\n top: -5px;\n}\n\n.hamburger-inner::after {\n bottom: -5px;\n}\n\n.hamburger--arrowturn.is-active .hamburger-inner {\n transform: rotate(-180deg);\n}\n\n.hamburger--arrowturn.is-active .hamburger-inner::before {\n transform: translate3d(3px, 1px, 0) rotate(45deg) scale(0.7, 1);\n}\n\n.hamburger--arrowturn.is-active .hamburger-inner::after {\n transform: translate3d(3px, -1px, 0) rotate(-45deg) scale(0.7, 1);\n}\n\n.fade-enter-active, .fade-leave-active {\n transition: opacity 0.2s;\n}\n\n.fade-enter, .fade-leave-active {\n opacity: 0;\n}\n\n.gauge {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.gauge-lg .basic-gauge, .gauge-lg .donut-gauge, .gauge-lg .color-gauge {\n height: 250px;\n}\n.gauge-lg .gauge-label {\n font-size: 40px;\n}\n\n.gauge-md .basic-gauge, .gauge-md .donut-gauge, .gauge-md .color-gauge {\n height: 180px;\n}\n\n.gauge-sm .basic-gauge, .gauge-sm .donut-gauge, .gauge-sm .color-gauge {\n height: 120px;\n}\n.gauge-sm .gauge-label {\n font-size: 20px;\n}\n\n.gauge-label {\n display: inline-block;\n position: absolute;\n top: 60%;\n left: 0px;\n width: 100%;\n text-align: center;\n font-size: 28px;\n font-weight: bold;\n}\n.gauge-label.middle-label {\n top: 50%;\n transform: translateY(-50%);\n}\n\n.gauge {\n position: relative;\n}\n\n@media (max-width: 480px) {\n .gauge-lg .basic-gauge, .gauge-lg .donut-gauge, .gauge-lg .color-gauge {\n height: 180px !important;\n width: auto !important;\n }\n .gauge-lg .gauge-label {\n font-size: 28px;\n }\n}\n.pace {\n -webkit-pointer-events: none;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.pace-inactive {\n display: none;\n}\n\n.pace .pace-progress {\n background: #2a249f;\n position: fixed;\n z-index: 2000;\n top: 0;\n right: 100%;\n width: 100%;\n height: 2px;\n}\n\n.pace .pace-progress-inner {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px #352dc9, 0 0 5px #352dc9;\n opacity: 1;\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -moz-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n -o-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n}\n\n.pace .pace-activity {\n display: block;\n position: fixed;\n z-index: 2000;\n top: 15px;\n right: 15px;\n width: 14px;\n height: 14px;\n border: solid 2px transparent;\n border-top-color: #352dc9;\n border-left-color: #352dc9;\n border-radius: 10px;\n -webkit-animation: pace-spinner 400ms linear infinite;\n -moz-animation: pace-spinner 400ms linear infinite;\n -ms-animation: pace-spinner 400ms linear infinite;\n -o-animation: pace-spinner 400ms linear infinite;\n animation: pace-spinner 400ms linear infinite;\n}\n\n@-webkit-keyframes pace-spinner {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-moz-keyframes pace-spinner {\n 0% {\n -moz-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -moz-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-o-keyframes pace-spinner {\n 0% {\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -o-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-ms-keyframes pace-spinner {\n 0% {\n -ms-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -ms-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes pace-spinner {\n 0% {\n transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.vue-tabs-demo .card-body .default .tabs-component .tabs-component-tabs {\n padding-left: 0px;\n}\n.vue-tabs-demo .card-body .default .suffix {\n background-color: #c03;\n color: #fff;\n margin-left: 0.35em;\n}\n.vue-tabs-demo .card-body .default .prefix {\n background-color: #d1e8eb;\n color: #0c5174;\n margin-right: 0.35em;\n}\n.vue-tabs-demo .card-body .default .prefix,\n.vue-tabs-demo .card-body .default .suffix {\n align-items: center;\n border-radius: 1.25rem;\n display: flex;\n font-size: 0.75rem;\n flex-shrink: 0;\n height: 1.25rem;\n justify-content: center;\n line-height: 1.25rem;\n min-width: 1.25rem;\n padding: 0 0.1em;\n}\n.vue-tabs-demo .card-body .default .tabs-component {\n margin: 2em 0;\n}\n.vue-tabs-demo .card-body .default .page-subtitle {\n font-size: 1.25rem;\n margin-bottom: 1em;\n padding-top: 0.25em;\n}\n\n.suffix {\n position: absolute;\n right: -0.725em;\n top: -0.725em;\n}\n\n.tabs-component {\n margin: 0 !important;\n}\n\n.tabs-component.tabs-default .tabs-component-tabs {\n padding: 0px;\n}\n.tabs-component.tabs-default .tabs-component-tab {\n border: none;\n background-color: none;\n border-radius: none;\n margin-right: 0.1rem !important;\n transform: none;\n transition: none;\n}\n.tabs-component.tabs-default .tabs-component-tab {\n margin: 0px;\n border: 1px solid transparent;\n}\n.tabs-component.tabs-default .tabs-component-tab a {\n padding: 0.75em 2rem !important;\n color: #333333;\n font-weight: normal;\n}\n.tabs-component.tabs-default .tabs-component-tab a:hover {\n color: #333333;\n text-decoration: none;\n}\n.tabs-component.tabs-default .tabs-component-tab.is-active {\n border: 1px solid #333;\n background: #333;\n color: #ffde00;\n}\n.tabs-component.tabs-default .tabs-component-tab.is-active a {\n color: #ffde00;\n}\n.tabs-component.tabs-default .tabs-component-tab:hover {\n border: 1px solid #333;\n}\n.tabs-component.tabs-default .tabs-component-panels {\n border-top: 1px solid #333333 !important;\n border: none;\n position: relative;\n border-radius: 0;\n padding: 1em 0em !important;\n box-shadow: none;\n}\n\n.tabs-component.tabs-default.primary .tabs-component-tab a {\n color: #333333;\n}\n.tabs-component.tabs-default.primary .tabs-component-tab.is-active {\n border: 1px solid #007dcc;\n background: #007dcc;\n color: #fff;\n}\n.tabs-component.tabs-default.primary .tabs-component-tab.is-active a {\n color: #fff;\n}\n.tabs-component.tabs-default.primary .tabs-component-tab:hover {\n border: 1px solid #007dcc;\n}\n.tabs-component.tabs-default.primary .tabs-component-panels {\n border-top: 1px solid #007dcc !important;\n}\n\n.tabs-component.tabs-vertical {\n display: flex !important;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs {\n display: inline-block !important;\n border-right: 1px solid #333333 !important;\n border-radius: 0;\n padding: 0px;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab {\n border: none;\n background-color: none;\n border-radius: 4px 0 0 4px;\n margin-bottom: 0.2rem !important;\n transform: none;\n transition: none;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab {\n margin: 0px;\n border: 1px solid transparent;\n border-right: 0;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a {\n padding: 0.75em 2rem !important;\n color: #333333;\n font-weight: normal;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab a:hover {\n color: #333333;\n text-decoration: none;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active {\n border: 1px solid transparent;\n border-right: 0;\n background: #333333;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab.is-active a {\n color: #ffde00;\n}\n.tabs-component.tabs-vertical .tabs-component-tabs .tabs-component-tab:hover {\n border: 1px solid #333333;\n border-right: 0;\n}\n.tabs-component.tabs-vertical .tabs-component-panels {\n border: none;\n position: relative;\n border-radius: 0;\n padding: 0em 0em !important;\n padding-left: 2em !important;\n box-shadow: none;\n}\n\n.tabs-component.tabs-vertical.primary .tabs-component-tabs {\n border-right: 1px solid #007dcc !important;\n}\n.tabs-component.tabs-vertical.primary .tabs-component-tabs .tabs-component-tab.is-active {\n background: #007dcc;\n color: #fff;\n}\n.tabs-component.tabs-vertical.primary .tabs-component-tabs .tabs-component-tab.is-active a {\n color: #fff;\n}\n.tabs-component.tabs-vertical.primary .tabs-component-tabs .tabs-component-tab:hover {\n border: 1px solid #007dcc;\n border-right: 0;\n}\n\n.tabs-component.tabs-simple .tabs-component-tabs {\n padding: 0px;\n}\n.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab {\n border: none;\n background-color: none;\n border-radius: none;\n transform: none;\n transition: none;\n}\n.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab {\n margin: 0px;\n}\n.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a {\n padding: 0.75em 2rem !important;\n color: #333333;\n}\n.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab a:hover {\n color: #333333;\n outline: none;\n border-bottom: 3px solid #fff299;\n}\n.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active {\n border-bottom: 3px solid #ffde00;\n color: #333;\n}\n.tabs-component.tabs-simple .tabs-component-tabs .tabs-component-tab.is-active a:hover {\n border-bottom: none;\n}\n.tabs-component.tabs-simple .tabs-component-panels {\n border-top: 1px solid #ddd !important;\n border: none;\n position: relative;\n border-radius: 0;\n padding: 1em 0em !important;\n box-shadow: none;\n}\n\n.tabs-component.tabs-simple-vertical {\n display: flex !important;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs {\n padding: 0px;\n display: inline-block !important;\n border-bottom: none;\n border-right: 1px solid #ddd !important;\n border-radius: 0;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab {\n border: none;\n background-color: none;\n border-radius: none;\n transform: none;\n transition: none;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab {\n margin: 0px;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a {\n padding: 0.75em 2rem !important;\n color: #333333;\n border-right: 3px solid transparent;\n background: transparent;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab a:hover {\n background-color: transparent;\n border-right: 3px solid #fff299;\n border-radius: 0;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab.is-active {\n border-right: 3px solid #ffde00;\n color: #333;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-tabs .tabs-component-tab.is-active a:hover {\n border-color: transparent;\n}\n.tabs-component.tabs-simple-vertical .tabs-component-panels {\n border: none;\n position: relative;\n border-radius: 0;\n padding: 0em 0em !important;\n padding-left: 2em !important;\n box-shadow: none;\n}\n\n.tabs-component-tabs {\n border: none !important;\n}\n\n.dropdown-group {\n position: relative;\n}\n.dropdown-group.active .dropdown-container {\n display: block;\n}\n.dropdown-group .dropdown-container {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem;\n margin: 0.125rem 0 0 0.125rem;\n font-size: 1rem;\n color: #fff;\n text-align: left;\n list-style: none;\n background-color: #040405;\n background-clip: padding-box;\n border-radius: 0.25rem;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n border: none;\n}\n.dropdown-group .dropdown-container.align-right {\n right: 0;\n left: auto;\n}\n.dropdown-group .dropdown-container .dropdown-group {\n display: block;\n margin: 0;\n}\n.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item {\n display: block;\n font-size: 15px;\n padding: 8px 12px;\n font-weight: 300;\n color: #040405;\n background-color: transparent;\n border-radius: 5px;\n}\n.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item:hover {\n background-color: #EBF1FA;\n}\n.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item.active {\n color: #5851D8;\n}\n.dropdown-group .dropdown-container .dropdown-group-item .dropdown-item i {\n color: #A5ACC1;\n margin-right: 5px;\n}\n.dropdown-group .dropdown-container .dropdown-activator {\n position: relative;\n}\n.dropdown-group .dropdown-container .dropdown-activator::after {\n content: none !important;\n}\n.dropdown-group .dropdown-container .dropdown-activator::before {\n border-color: #fff transparent transparent;\n border-style: solid;\n border-width: 5px 4px 0;\n content: \"\";\n display: block;\n height: 0;\n position: absolute;\n right: 10px;\n top: 18px;\n transition: all 0.2s ease-in-out;\n width: 0;\n transform: rotate(90deg);\n}\n.dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator a {\n color: #5851D8;\n}\n.dropdown-group .dropdown-container .dropdown-group.active .dropdown-activator::before {\n transform: rotate(-90deg);\n border-color: #5851D8 transparent transparent;\n}\n.dropdown-group .dropdown-container .dropdown-container {\n display: block;\n margin: 0;\n left: 100%;\n top: 0;\n position: absolute;\n margin: 0.125rem 0.125rem 0;\n}\n.dropdown-group .dropdown-container .dropdown-container.align-right {\n right: 100%;\n left: auto;\n}\n.dropdown-group .dropdown-container .dropdon-group-item {\n position: relative;\n}\n.dropdown-group .dropdown-item-divider {\n border-top: 1px solid #fff;\n height: 1px;\n margin: 0.5rem 0;\n overflow: hidden;\n}\n\n.dropdown-group.dropdown-light .dropdown-container {\n color: #040405;\n background-color: #fff;\n border: 1px solid #c3c8d6;\n}\n.dropdown-group.dropdown-light .dropdown-container .dropdown-group-item a {\n color: #040405;\n}\n.dropdown-group.dropdown-light .dropdown-container .dropdown-group-item a.active {\n color: #040405;\n background-color: #cfd4df;\n}\n.dropdown-group.dropdown-light .dropdown-container .dropdown-group-item a:hover {\n background-color: #cfd4df;\n}\n.dropdown-group.dropdown-light .dropdown-container .dropdown-activator::before {\n border-color: #A5ACC1 transparent transparent;\n}\n.dropdown-group.dropdown-light .dropdown-container .dropdown-group.active .dropdown-activator a {\n color: #040405;\n background-color: #cfd4df;\n}\n.dropdown-group.dropdown-light .dropdown-container .dropdown-group.active .dropdown-activator::before {\n border-color: #A5ACC1 transparent transparent;\n}\n.dropdown-group.dropdown-light .dropdown-item-divider {\n border-top: 1px solid #040405;\n}\n\n.dropdown-item .dropdown-item-icon {\n width: 20px;\n height: 14px;\n margin-right: 6px;\n color: #55547A;\n}\n\n.action {\n position: absolute;\n right: 0;\n z-index: 1;\n}\n.action .action-btn {\n color: #5851D8;\n background: transparent;\n border: none;\n}\n\n.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover, .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover, .vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover {\n border: 1px solid #5851D8 !important;\n}\n.vdp-datepicker__calendar .cell.selected {\n background: #5851D8 !important;\n}\n.vdp-datepicker__calendar .cell.highlighted {\n background: #bcb9ef !important;\n}\n\nfieldset[disabled] .multiselect {\n pointer-events: none;\n}\n\n.in-valid {\n border: 1px solid #FB7178 !important;\n}\n\n.multiselect {\n min-height: 40px;\n}\n\n.multiselect__spinner {\n position: absolute;\n right: 1px;\n top: 1px;\n width: 48px;\n height: 35px;\n background: #fff;\n display: block;\n}\n\n.multiselect__spinner:before,\n.multiselect__spinner:after {\n position: absolute;\n content: \"\";\n top: 50%;\n left: 50%;\n margin: -8px 0 0 -8px;\n z-index: 5;\n width: 16px;\n height: 16px;\n border-radius: 100%;\n border-color: #41b883 transparent transparent;\n border-style: solid;\n border-width: 2px;\n box-shadow: 0 0 0 1px transparent;\n}\n\n.multiselect__spinner:before {\n animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);\n animation-iteration-count: infinite;\n}\n\n.multiselect__spinner:after {\n animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);\n animation-iteration-count: infinite;\n}\n\n.multiselect__loading-enter-active,\n.multiselect__loading-leave-active {\n transition: opacity 0.4s ease-in-out;\n opacity: 1;\n}\n\n.multiselect__loading-enter,\n.multiselect__loading-leave-active {\n opacity: 0;\n}\n\n.multiselect,\n.multiselect__input,\n.multiselect__single {\n font-family: inherit;\n font-size: 14px;\n touch-action: manipulation;\n}\n\n.multiselect {\n box-sizing: content-box;\n display: block;\n position: relative;\n width: 100%;\n min-height: 40px;\n text-align: left;\n color: #35495e;\n}\n\n.multiselect * {\n box-sizing: border-box;\n}\n\n.multiselect:focus {\n border: 1px solid #817ae3 !important;\n}\n\n.multiselect--disabled {\n pointer-events: none;\n opacity: 0.6;\n}\n\n.multiselect--active {\n z-index: 50;\n}\n\n.multiselect--active:not(.multiselect--above) .multiselect__current,\n.multiselect--active:not(.multiselect--above) .multiselect__input,\n.multiselect--active:not(.multiselect--above) .multiselect__tags {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.multiselect--active .multiselect__select {\n transform: rotateZ(180deg);\n}\n\n.multiselect--above.multiselect--active .multiselect__current,\n.multiselect--above.multiselect--active .multiselect__input,\n.multiselect--above.multiselect--active .multiselect__tags {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.multiselect__input,\n.multiselect__single {\n position: relative;\n display: inline-block;\n min-height: 20px;\n line-height: 20px;\n border: none;\n border-radius: 5px;\n background: #fff;\n padding: 0 0 0 5px;\n width: calc(100%);\n transition: border 0.1s ease;\n box-sizing: border-box;\n vertical-align: top;\n}\n\n.multiselect__input::placeholder {\n color: #B9C1D1;\n}\n\n.multiselect__tag ~ .multiselect__input,\n.multiselect__tag ~ .multiselect__single {\n width: auto;\n}\n\n.multiselect__input:hover,\n.multiselect__single:hover {\n border-color: #cfcfcf;\n}\n\n.multiselect__input:focus,\n.multiselect__single:focus {\n border-color: #a8a8a8;\n outline: none;\n}\n\n.multiselect__single {\n padding-left: 5px;\n margin-bottom: 8px;\n}\n\n.multiselect__tags-wrap {\n display: inline;\n}\n\n.multiselect__tags {\n min-height: 40px;\n display: block;\n padding: 8px 40px 0 8px;\n border-radius: 5px;\n border: 1px solid #EBF1FA;\n background: #fff;\n font-size: 14px;\n}\n\n.multiselect__tag {\n position: relative;\n display: inline-block;\n padding: 4px 26px 4px 10px;\n border-radius: 5px;\n margin-right: 10px;\n color: #fff;\n line-height: 1;\n background: #41b883;\n margin-bottom: 5px;\n white-space: nowrap;\n overflow: hidden;\n max-width: 100%;\n text-overflow: ellipsis;\n}\n\n.multiselect__tag-icon {\n cursor: pointer;\n margin-left: 7px;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n font-weight: 700;\n font-style: initial;\n width: 22px;\n text-align: center;\n line-height: 22px;\n transition: all 0.2s ease;\n border-radius: 5px;\n}\n\n.multiselect__tag-icon:after {\n content: \"×\";\n color: #266d4d;\n font-size: 14px;\n}\n\n.multiselect__tag-icon:focus,\n.multiselect__tag-icon:hover {\n background: #369a6e;\n}\n\n.multiselect__tag-icon:focus:after,\n.multiselect__tag-icon:hover:after {\n color: white;\n}\n\n.multiselect__current {\n line-height: 16px;\n min-height: 40px;\n box-sizing: border-box;\n display: block;\n overflow: hidden;\n padding: 8px 12px 0;\n padding-right: 30px;\n white-space: nowrap;\n margin: 0;\n text-decoration: none;\n border-radius: 5px;\n border: 1px solid #EBF1FA;\n cursor: pointer;\n}\n\n.multiselect__select {\n line-height: 20px;\n display: block;\n position: absolute;\n box-sizing: border-box;\n width: 30px;\n height: 40px;\n right: 1px;\n top: 1px;\n padding: 4px 8px;\n margin: 0;\n text-decoration: none;\n text-align: center;\n cursor: pointer;\n transition: transform 0.2s;\n}\n\n.multiselect__select:before {\n position: relative;\n right: 0;\n top: 65%;\n color: #A5ACC1;\n margin-top: 4px;\n border-style: solid;\n border-width: 5px 5px 0 5px;\n border-color: #A5ACC1 transparent transparent transparent;\n content: \"\";\n}\n\n.multiselect__placeholder {\n color: #B9C1D1;\n display: inline-block;\n margin-bottom: 10px;\n padding-top: 2px;\n}\n\n.multiselect--active .multiselect__placeholder {\n display: none;\n}\n\n.multiselect__content-wrapper {\n position: absolute;\n display: block;\n background: #fff;\n width: 100%;\n max-height: 240px;\n overflow: auto;\n border: 1px solid #EBF1FA;\n border-top: none;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n z-index: 50;\n -webkit-overflow-scrolling: touch;\n}\n\n.multiselect__content {\n list-style: none;\n display: inline-block;\n padding: 0;\n margin: 0;\n min-width: 100%;\n vertical-align: top;\n}\n\n.multiselect--above .multiselect__content-wrapper {\n bottom: 100%;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n border-bottom: none;\n border-top: 1px solid #e8e8e8;\n}\n\n.multiselect__content::webkit-scrollbar {\n display: none;\n}\n\n.multiselect__element {\n display: block;\n}\n\n.multiselect__option {\n display: block;\n padding: 12px;\n min-height: 40px;\n line-height: 16px;\n text-decoration: none;\n text-transform: none;\n vertical-align: middle;\n position: relative;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.multiselect__option:after {\n top: 0;\n right: 0;\n position: absolute;\n line-height: 40px;\n padding-right: 12px;\n padding-left: 20px;\n font-size: 13px;\n}\n\n.multiselect__option--highlight {\n background: #41b883;\n outline: none;\n color: white;\n}\n\n.multiselect__option--highlight:after {\n content: attr(data-select);\n background: #41b883;\n color: white;\n}\n\n.multiselect__option--selected {\n background: #f3f3f3;\n color: #35495e;\n font-weight: bold;\n}\n\n.multiselect__option--selected:after {\n content: attr(data-selected);\n color: silver;\n}\n\n.multiselect__option--selected.multiselect__option--highlight {\n background: #ff6a6a;\n color: #fff;\n}\n\n.multiselect__option--selected.multiselect__option--highlight:after {\n background: #ff6a6a;\n content: attr(data-deselect);\n color: #fff;\n}\n\n.multiselect--disabled .multiselect__current,\n.multiselect--disabled .multiselect__select {\n background: #EBF1FA;\n color: #B9C1D1;\n}\n\n.multiselect--disabled .multiselect__tags {\n background: #EBF1FA;\n color: #B9C1D1;\n}\n\n.multiselect--disabled .multiselect__input,\n.multiselect--disabled .multiselect__single {\n background: #EBF1FA;\n color: #B9C1D1;\n}\n\n.multiselect__option--disabled {\n background: transparent !important;\n color: #dddddd !important;\n cursor: text;\n pointer-events: none;\n}\n\n.multiselect__option--group {\n background: #ededed;\n color: #35495e;\n}\n\n.multiselect__option--group.multiselect__option--highlight {\n background: #35495e;\n color: #fff;\n}\n\n.multiselect__option--group.multiselect__option--highlight:after {\n background: #35495e;\n}\n\n.multiselect__option--disabled.multiselect__option--highlight {\n background: #dedede;\n}\n\n.multiselect__option--group-selected.multiselect__option--highlight {\n background: #ff6a6a;\n color: #fff;\n}\n\n.multiselect__option--group-selected.multiselect__option--highlight:after {\n background: #ff6a6a;\n content: attr(data-deselect);\n color: #fff;\n}\n\n.multiselect-enter-active,\n.multiselect-leave-active {\n transition: all 0.15s ease;\n}\n\n.multiselect-enter,\n.multiselect-leave-active {\n opacity: 0;\n}\n\n.multiselect__strong {\n margin-bottom: 8px;\n line-height: 20px;\n display: inline-block;\n vertical-align: top;\n}\n\n*[dir=rtl] .multiselect {\n text-align: right;\n}\n\n*[dir=rtl] .multiselect__select {\n right: auto;\n left: 1px;\n}\n\n*[dir=rtl] .multiselect__tags {\n padding: 8px 8px 0px 40px;\n}\n\n*[dir=rtl] .multiselect__content {\n text-align: right;\n}\n\n*[dir=rtl] .multiselect__option:after {\n right: auto;\n left: 0;\n}\n\n*[dir=rtl] .multiselect__clear {\n right: auto;\n left: 12px;\n}\n\n*[dir=rtl] .multiselect__spinner {\n right: auto;\n left: 1px;\n}\n\n@keyframes spinning {\n from {\n transform: rotate(0);\n }\n to {\n transform: rotate(2turn);\n }\n}\n.multiselect .multiselect__option--highlight {\n background: #5851D8;\n color: #040405;\n font-weight: normal !important;\n}\n.multiselect .multiselect__option--highlight.multiselect__option--selected {\n background: #EBF1FA;\n color: #040405;\n font-size: 1rem;\n font-weight: normal !important;\n}\n.multiselect .multiselect__option--highlight.multiselect__option--selected::after {\n background: #040405;\n color: #fff;\n}\n.multiselect .multiselect__option--highlight::after {\n background: #040405;\n color: #fff;\n}\n.multiselect .multiselect__option--selected {\n font-weight: normal !important;\n background: #EBF1FA;\n}\n.multiselect .multiselect__tags-wrap .multiselect__tag {\n background: #5851D8;\n color: #040405;\n}\n.multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon:hover {\n background: #5851D8;\n}\n.multiselect .multiselect__tags-wrap .multiselect__tag .multiselect__tag-icon::after {\n color: #040405;\n}\n.multiselect.error {\n border: 1px solid #FB7178;\n border-radius: 5px;\n}\n\n.customer-select label {\n cursor: pointer;\n}\n.customer-select .main {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n.customer-select .main .search-bar {\n display: flex;\n padding: 15px 15px 5px 15px;\n}\n.customer-select .main .search-bar .search-icon {\n color: #B9C1D1;\n font-size: 14px;\n font-weight: 900;\n margin: 4px 0 0 0;\n}\n.customer-select .main .no-data-label {\n display: flex;\n justify-content: center;\n color: #B9C1D1;\n padding: 20px 20px;\n}\n.customer-select .main .no-data-label label {\n margin: 0 0 0 0;\n}\n.customer-select .list {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: auto;\n max-height: 173px;\n min-height: 173px;\n}\n.customer-select .list .list-item {\n display: flex;\n padding: 10px 23px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n cursor: pointer;\n}\n.customer-select .list .avatar {\n width: 35px;\n height: 35px;\n background: #B9C1D1;\n border-radius: 50%;\n margin: 1px 21px 0 0;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n font-size: 16px;\n line-height: 24px;\n color: #fff;\n}\n.customer-select .list .name {\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.customer-select .list .name .title {\n font-size: 16px;\n font-family: Poppins;\n margin: 0 0 0 0;\n line-height: 1.2;\n}\n.customer-select .list .name .sub-title {\n font-family: Poppins;\n font-weight: 500;\n font-size: 12px;\n color: #A5ACC1;\n letter-spacing: 0.5px;\n margin: 0 0 0 0;\n}\n.customer-select .list .list-item:last-child {\n border: none;\n}\n.customer-select .list .list-item:hover {\n background: #F9FBFF;\n cursor: pointer;\n}\n\n.item-select .main-section {\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 15px 15px 0 15px;\n}\n.item-select .main-section .search-bar {\n display: flex;\n position: relative;\n width: 100%;\n}\n.item-select .main-section .no-data-label {\n display: flex;\n justify-content: center;\n color: #B9C1D1;\n padding: 20px 20px;\n}\n.item-select .main-section .no-data-label label {\n margin: 0 0 0 0;\n}\n.item-select .list {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: auto;\n}\n.item-select .list .list-item {\n display: flex;\n justify-content: space-between;\n padding: 16px 23px;\n max-height: 56px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n cursor: pointer;\n}\n.item-select .list .list-item .title {\n font-size: 16px;\n color: black;\n cursor: pointer;\n}\n.item-select .list .list-item .price {\n font-size: 16px;\n color: black;\n cursor: pointer;\n}\n.item-select .list .list-item:last-child {\n border: none;\n}\n.item-select .list .list-item:hover {\n background: #F9FBFF;\n}\n\n.tax-select .main-section {\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 15px 15px 0 15px;\n}\n.tax-select .search-bar {\n display: flex;\n position: relative;\n width: 100%;\n}\n.tax-select .no-data-label {\n display: flex;\n justify-content: center;\n color: #B9C1D1;\n padding: 20px 20px;\n}\n.tax-select .no-data-label label {\n margin: 0 0 0 0;\n}\n.tax-select .list {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: auto;\n max-height: 112px;\n}\n.tax-select .list .list-item {\n display: flex;\n justify-content: space-between;\n padding: 16px;\n max-height: 56px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n cursor: pointer;\n}\n.tax-select .list .list-item label {\n font-size: 16px;\n margin: 0;\n font-weight: normal;\n color: #262630;\n line-height: 1.2;\n display: inline-block;\n cursor: pointer;\n}\n.tax-select .list .list-item:last-child {\n border: none;\n}\n.tax-select .list .list-item:hover {\n background: #F9FBFF;\n cursor: pointer;\n}\n.tax-select .list .item-disabled {\n background: #F9FBFF;\n cursor: not-allowed !important;\n opacity: 0.5;\n z-index: -10;\n pointer-events: none !important;\n}\n\n.image-upload-box {\n height: 110px;\n padding: 20px;\n background-color: transparent;\n border: 2px dashed #EBF1FA;\n border-radius: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n cursor: pointer;\n}\n.image-upload-box .preview-logo {\n max-height: 80%;\n position: absolute;\n opacity: 1;\n animation: fadeIn 2s ease;\n}\n.image-upload-box .upload-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.image-upload-box .upload-text {\n font-size: 12px;\n line-height: 18px;\n text-align: center;\n color: #B9C1D1;\n}\n.image-upload-box .upload-icon {\n font-size: 20px;\n line-height: 23px;\n color: #B9C1D1;\n margin-bottom: 10px;\n}\n.image-upload-box .white-icon {\n font-size: 30px;\n line-height: 23px;\n color: #fff;\n margin-bottom: 10px;\n}\n.image-upload-box .overlay {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 10;\n transition: 0.5s ease;\n background-color: rgba(0, 0, 0, 0.5);\n opacity: 0;\n}\n.image-upload-box:hover .overlay {\n opacity: 1;\n}\n\n.avatar-upload {\n height: 130px;\n width: 130px;\n}\n.avatar-upload .preview-logo {\n max-width: 80% !important;\n}\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n.payment-modes-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.payment-modes-modal .input-label {\n text-align: end;\n padding-right: 0;\n position: relative;\n}\n.payment-modes-modal .required {\n position: absolute;\n color: #FB7178;\n}\n.payment-modes-modal .compound-tax-toggle {\n display: flex;\n align-items: center;\n margin-top: 9px;\n}\n\n@media (max-width: 480px) {\n .base-modal .payment-modes-modal-modal {\n width: 100vw;\n }\n .base-modal .payment-modes-modal-modal .input-label {\n text-align: left;\n }\n}\n.item-unit-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.item-unit-modal .input-label {\n text-align: end;\n padding-right: 0;\n position: relative;\n}\n.item-unit-modal .required {\n position: absolute;\n color: #FB7178;\n}\n.item-unit-modal .compound-tax-toggle {\n display: flex;\n align-items: center;\n margin-top: 9px;\n}\n\n@media (max-width: 480px) {\n .base-modal .item-unit-modal {\n width: 100vw;\n }\n .base-modal .item-unit-modal .input-label {\n text-align: left;\n }\n}\n.mail-test-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.mail-test-modal .input-label {\n text-align: end;\n padding-right: 0;\n position: relative;\n}\n.mail-test-modal .required {\n position: absolute;\n margin-left: 4px;\n color: #FB7178;\n}\n.mail-test-modal .compound-tax-toggle {\n display: flex;\n align-items: center;\n margin-top: 9px;\n}\n\n@media (max-width: 480px) {\n .base-modal .mail-test-modal {\n width: 100vw;\n }\n .base-modal .mail-test-modal .input-label {\n text-align: left;\n }\n}\n.base-modal {\n position: fixed;\n width: 100%;\n height: 100%;\n background: rgba(4, 4, 5, 0.1);\n z-index: 10001;\n justify-content: center;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.base-modal .modal-header {\n display: flex;\n justify-content: space-between;\n height: 70px;\n border-bottom: 1px solid #EBF1FA;\n padding: 30px 30px 20px 30px !important;\n}\n.base-modal .modal-header::before {\n content: \"\";\n position: absolute;\n width: 100%;\n top: 0;\n left: 0;\n height: 10px;\n background: #5851D8;\n}\n.base-modal .modal-header .modal-heading {\n font-size: 17.5px;\n font-weight: 500;\n margin: 0;\n}\n.base-modal .modal-body {\n background: white;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n position: relative;\n max-width: 600px;\n border: none;\n border-radius: 10px;\n overflow: hidden;\n padding: 0;\n}\n.base-modal.size-lg .modal-body {\n max-width: 800px;\n}\n.base-modal.size-sm .modal-body {\n max-width: 400px;\n}\n.base-modal .close-icon {\n position: absolute;\n padding: 6px;\n top: 23px;\n right: 15px;\n display: flex;\n justify-content: center;\n align-content: center;\n width: 20px;\n cursor: pointer;\n}\n\n@media (max-width: 480px) {\n .base-modal .modal-body {\n height: 100%;\n overflow: scroll;\n border-radius: 0px;\n }\n}\n.base-modal .modal-body {\n overflow: visible !important;\n}\n\n.item-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.item-modal .col-form-label {\n text-align: end;\n padding-right: 0;\n position: relative;\n}\n.item-modal .required {\n position: absolute;\n right: -10px;\n color: #FB7178;\n}\n\n@media (max-width: 480px) {\n .base-modal .item-modal .input-label {\n text-align: left;\n }\n .base-modal .item-modal .input-label .item-modal {\n width: 100vw;\n }\n .base-modal .item-modal .input-label .item-modal .input-label {\n text-align: left;\n }\n .base-modal .item-modal .input-label .required {\n position: absolute;\n right: auto;\n margin-left: 5px;\n color: #FB7178;\n }\n}\n.template-modal .template-container {\n display: flex;\n justify-content: flex-start;\n overflow-x: auto;\n flex-wrap: wrap;\n padding: 5px;\n}\n.template-modal .template-img {\n margin: 12px;\n border: 1px solid #EBF1FA;\n}\n.template-modal .selected-template {\n border: 1px solid #5851D8;\n position: relative;\n}\n.template-modal .check-icon {\n width: 20px;\n height: 20px;\n position: absolute;\n color: #5851D8;\n top: -6px;\n right: -5px;\n z-index: 10;\n}\n.template-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.template-modal .card-footer .btn-crater {\n margin-left: 15px;\n}\n\n@media (max-width: 480px) {\n .base-modal .template-modal {\n width: 100vw;\n }\n .base-modal .template-modal .template-container {\n justify-content: center;\n }\n}\n.customer-modal .card-body {\n padding-bottom: 4px;\n}\n.customer-modal .col-form-label {\n text-align: end;\n font-family: poppins, sans-serif;\n padding-right: 0;\n font-size: 14px;\n position: relative;\n}\n.customer-modal .required {\n position: absolute;\n color: #FB7178;\n right: -10px;\n}\n.customer-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.customer-modal .card-footer .btn-crater {\n margin-left: 15px;\n}\n.customer-modal .copy-address-button {\n display: flex;\n justify-content: flex-end;\n}\n\n@media (max-width: 480px) {\n .base-modal .customer-modal {\n width: 100vw;\n }\n .base-modal .customer-modal .required {\n position: relative;\n }\n .base-modal .customer-modal .input-label {\n text-align: left;\n }\n}\n.tax-type-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.tax-type-modal .input-label {\n text-align: end;\n padding-right: 0;\n position: relative;\n}\n.tax-type-modal .required {\n position: absolute;\n left: -10px;\n color: #FB7178;\n}\n.tax-type-modal .compound-tax-toggle {\n display: flex;\n align-items: center;\n margin-top: 9px;\n}\n\n@media (max-width: 480px) {\n .base-modal .tax-type-modal {\n width: 100vw;\n }\n .base-modal .tax-type-modal .input-label {\n text-align: left;\n }\n}\n.category-modal .card-footer {\n display: flex;\n justify-content: flex-end;\n padding: 20px 20px;\n}\n.category-modal .col-form-label {\n text-align: end;\n padding-right: 0;\n position: relative;\n}\n.category-modal .required {\n position: absolute;\n right: -10px;\n color: #FB7178;\n}\n\n@media (max-width: 480px) {\n .base-modal .category-modal .input-label {\n text-align: left;\n }\n}\n.dashboard .dashboard-table .table-component .dashboard-recent-invoice-options .dropdown-container {\n margin: 10px 5px 0 -75px;\n}\n\n.dashbox {\n background-color: #fff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n border-radius: 4px;\n margin-bottom: 30px;\n padding: 20px;\n position: relative;\n display: flex;\n justify-content: space-between;\n}\n.dashbox i {\n font-size: 30px;\n left: 40px;\n position: absolute;\n top: 53px;\n}\n.dashbox .title {\n color: #A5ACC1;\n display: block;\n font-size: 17.5px;\n line-height: 21px;\n margin-top: 5px;\n}\n.dashbox .amount {\n color: #040405;\n font-weight: 600;\n font-size: 28px;\n line-height: 34px;\n}\n.dashbox:active, .dashbox:focus, .dashbox:hover {\n text-decoration: none;\n background-color: #F9FBFF;\n}\n\n.dash-item {\n flex: 3;\n padding: 0 15px 0 15px;\n}\n\n.dash-item:first-child {\n flex: 5;\n}\n\n.dashboard-card .card-header {\n border: none !important;\n margin-bottom: 30px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0;\n padding-left: 10px;\n}\n.dashboard-card .card-header h6 {\n font-weight: 500;\n font-size: 17.5px;\n line-height: 21px;\n letter-spacing: 0.1px;\n flex: 1;\n}\n.dashboard-card .card-header .year-selector {\n height: 50px;\n width: 150px;\n}\n\n.graph-body {\n display: flex !important;\n}\n.graph-body .chart-desc {\n border-left: 1px solid #EBF1FA;\n padding: 0;\n}\n.graph-body .stats {\n text-align: right;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.graph-body .stats .description {\n padding-top: 30px;\n flex: 1;\n}\n.graph-body .stats .description:last-child {\n border-top: 1px solid #EBF1FA;\n padding-top: 30px;\n}\n.graph-body .stats .title {\n font-size: 14px;\n line-height: 21px;\n letter-spacing: 0.01em;\n padding-right: 25px;\n}\n.graph-body .stats .total {\n display: block;\n margin-top: 6px;\n font-weight: 600;\n font-size: 24.5px;\n line-height: 29px;\n padding-right: 25px;\n}\n\n.table-row {\n margin-top: 20px;\n}\n.table-row .table-header {\n display: flex;\n justify-content: space-between;\n position: relative;\n align-items: center;\n z-index: 1;\n margin-bottom: 10px;\n}\n.table-row .table-header .table-title {\n font-weight: 600;\n font-size: 21px;\n line-height: 25px;\n margin-bottom: 0;\n}\n\n.dashbox-line-progress {\n padding: 30px;\n text-align: left;\n}\n.dashbox-line-progress i {\n right: 30px;\n left: auto;\n top: 30px;\n}\n.dashbox-line-progress .progress {\n height: 0.5rem;\n margin-bottom: 0;\n background-color: #EBF1FA;\n}\n.dashbox-line-progress .title {\n margin-bottom: 15px;\n font-size: 26px;\n}\n\n.dashbox-circle-progress {\n text-align: left;\n padding: 30px;\n}\n.dashbox-circle-progress .easy-pie-chart {\n position: absolute;\n right: 30px;\n top: 50%;\n transform: translate(0, -50%);\n}\n\n@media (min-width: 1200px) and (max-width: 1400px) {\n .dashbox {\n padding: 15px;\n }\n .dashbox i {\n left: 30px;\n top: 25px;\n }\n .dashbox.dashbox-line-progress i {\n right: 15px;\n left: auto;\n top: 15px;\n }\n\n .dashbox-circle-progress {\n padding: 30px;\n }\n}\n@media (max-width: 1200px) {\n .dashbox {\n padding: 12px;\n }\n .dashbox .title {\n font-size: 14px;\n line-height: 16px;\n margin-top: 3px;\n }\n .dashbox .amount {\n font-weight: 500;\n font-size: 24px;\n line-height: 30px;\n }\n\n .graph-body {\n display: block !important;\n }\n .graph-body .stats {\n flex-direction: row;\n flex-wrap: wrap;\n text-align: center;\n border-top: 1px solid #EBF1FA;\n }\n .graph-body .stats .total {\n padding-right: 0;\n }\n .graph-body .stats .description {\n padding: 30px 25px;\n }\n .graph-body .stats .description:last-child {\n border-top: none;\n padding-top: 30px;\n border-left: 1px solid #EBF1FA;\n }\n}\n@media (max-width: 992px) {\n .dashbox .icon .card-icon {\n height: 40px;\n width: 40px;\n }\n\n .dashboard-card .card-header {\n margin-bottom: 20px;\n }\n .dashboard-card .card-header .year-selector {\n height: 40px;\n }\n\n .dashboard-card .card-header {\n padding-left: 0;\n }\n .dashboard-card .card-header h6 {\n font-size: 16px;\n line-height: 19px;\n letter-spacing: 0;\n }\n\n .dash-item {\n flex: 3px;\n padding: 0 15px 0 15px;\n }\n\n .dash-item:nth-child(odd) {\n padding: 0 15px 0 15px;\n flex: 100%;\n }\n\n .dash-item:nth-child(even) {\n padding: 0 15px 0 15px;\n flex: 100%;\n }\n\n .graph-body .stats .title {\n font-size: 12px;\n line-height: 12px;\n padding-right: 0;\n }\n .graph-body .stats .total {\n display: block;\n margin-top: 3px;\n font-weight: 600;\n font-size: 16px;\n line-height: 1.2;\n }\n .graph-body .stats .description {\n padding: 10px;\n }\n .graph-body .stats .description:last-child {\n padding: 10px;\n flex: 100%;\n border-top: 1px solid #EBF1FA;\n }\n .graph-body .stats .description:last-child .title {\n padding-right: 0;\n }\n\n .table-row .mob-table {\n margin-top: 25px !important;\n }\n}\n.card.with-tabs .tabs-component .tabs-component-tabs {\n position: absolute;\n right: 1.25rem;\n top: 14px;\n}\n.card.with-tabs .tabs-component .tabs-component-panels {\n border: 0 !important;\n}\n\n@media (max-width: 768px) {\n .card.with-tabs .tabs-component .tabs-component-tabs {\n position: relative;\n display: block;\n margin-right: -41px;\n border-radius: 0;\n top: -21px;\n margin-left: -1px;\n }\n .card.with-tabs .tabs-component .tabs-component-tab:not(:last-child) {\n border-bottom: dotted 1px #B9C1D1;\n }\n\n .dashboard-table .table-component tr:first-child {\n margin-top: 20px;\n }\n .dashboard-table .table-component td:first-child {\n padding-top: 40px !important;\n justify-content: center;\n }\n}\n.login-page {\n height: 100%;\n background-color: #F9FBFF;\n}\n.login-page .login-wrapper {\n height: 100%;\n padding-top: 0;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.login-page .login-box {\n color: #fff;\n padding: 20px;\n width: 100%;\n max-width: 400px;\n}\n.login-page .login-box .input-label {\n padding-bottom: 5px;\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #55547A;\n}\n.login-page .login-box .other-actions {\n margin-bottom: 10px;\n margin-top: 20px;\n}\n.login-page .login-box .page-copyright {\n font-size: 14px;\n margin-top: 50px;\n text-align: center;\n}\n.login-page .login-box .page-copyright p {\n margin-bottom: 10px;\n}\n.login-page .login-box a {\n color: #5851D8;\n}\n.login-page .login-box a:hover {\n color: #443cd3;\n}\n.login-page .login-box .btn-login {\n background-color: #5851D8;\n color: white;\n}\n.login-page .login-box .btn-login:hover {\n background-color: #443cd3;\n}\n.login-page .login-box .c-input {\n color: #fff;\n}\n.login-page .login-box .c-input .c-indicator {\n top: 2px;\n}\n.login-page .login-wrapper .c-input > input:checked ~ .c-indicator {\n background-color: #333;\n}\n.login-page .login-wrapper .c-input > input:focus ~ .c-indicator {\n box-shadow: 0 0 0 0.075rem #fff, 0 0 0 0.2rem #262626;\n}\n.login-page .login-wrapper .c-input > input:active ~ .c-indicator {\n background-color: #262626;\n}\n.login-page .logo-main {\n margin-bottom: 127px;\n text-align: left;\n}\n.login-page .logo-main img {\n height: auto;\n width: 300px;\n}\n.login-page .other-options {\n border-top: 1px solid #fff;\n padding: 1rem 0;\n padding-top: 2rem;\n}\n.login-page .other-options h6 {\n color: #c7cbd1;\n font-size: 15px;\n margin-top: 12px;\n}\n.login-page .other-options a,\n.login-page .other-options a:hover {\n color: #fff;\n}\n.login-page .actions {\n margin-top: 30px;\n}\n.login-page .actions .btn-theme {\n margin-right: 20px;\n margin-top: 20px;\n}\n@media (max-width: 768px) {\n .login-page .other-actions {\n font-size: 14px;\n }\n .login-page .logo-main img {\n height: auto;\n max-width: 100%;\n }\n}\n.login-page .social-links {\n margin-top: 40px;\n}\n.login-page .social-links .link-text {\n font-style: normal;\n font-weight: 500;\n font-size: 15px;\n line-height: 17px;\n color: #B9C1D1;\n}\n.login-page .social-links .social-logo {\n display: flex;\n align-items: center;\n padding-top: 25px;\n}\n.login-page .social-links .social-logo .icon {\n display: block;\n margin-right: 30px;\n cursor: pointer;\n}\n\n.login-page.login-3 .site-wrapper {\n display: flex;\n}\n.login-page.login-3 .login-box {\n color: #333;\n flex: 2;\n padding: 150px 60px 180px;\n display: flex;\n justify-content: center;\n align-items: center;\n max-width: 500px;\n min-width: 450px;\n}\n.login-page.login-3 .login-box .box-wrapper {\n width: 100%;\n}\n.login-page.login-3 .content-box {\n background-image: url(\"/images/login-vector1.svg\");\n background-size: cover;\n background-repeat: no-repeat;\n height: 100%;\n width: 100%;\n position: relative;\n flex: 5;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n}\n.login-page.login-3 .content-box h1 {\n color: #fff;\n font-size: 50px;\n}\n.login-page.login-3 .content-box p {\n color: #F9FBFF;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 24px;\n}\n.login-page.login-3 .content-bottom {\n background-image: url(\"/images/login-vector3.svg\");\n background-size: 100% 100%;\n background-repeat: no-repeat;\n z-index: 100;\n position: absolute;\n width: 100%;\n height: 100px;\n bottom: 0;\n right: 32%;\n}\n.login-page.login-3 .content-box::before {\n background-image: url(\"/images/frame.svg\");\n content: \"\";\n background-size: 100% 100%;\n background-repeat: no-repeat;\n height: 300px;\n right: 0;\n position: absolute;\n top: 0;\n width: 420px;\n z-index: 1;\n}\n.login-page.login-3 .content-box::after {\n background-image: url(\"/images/login-vector2.svg\");\n content: \"\";\n background-size: cover;\n background-repeat: no-repeat;\n height: 100%;\n width: 100%;\n right: 7.5%;\n position: absolute;\n}\n.login-page.login-3 .c-input {\n color: #555;\n}\n.login-page.login-3 .login-box a {\n color: #817AE3;\n}\n.login-page.login-3 .login-box a:hover {\n color: #4d4d4d;\n}\n.login-page.login-3 .other-options h6 {\n color: #555;\n}\n.login-page.login-3 .page-copyright {\n margin-top: 0;\n padding-top: 150px;\n color: #A5ACC1;\n font-style: normal;\n font-weight: 500;\n font-size: 15px;\n line-height: 17px;\n text-align: left;\n}\n.login-page.login-3 .page-copyright a {\n color: #5851D8;\n}\n.login-page.login-3 .page-copyright a:hover {\n color: #352dc9;\n}\n.login-page.login-3 .logo-main img {\n width: 200px;\n}\n@media (max-width: 1240px) {\n .login-page.login-3 .content-box h1 {\n display: none;\n }\n .login-page.login-3 .content-box p {\n display: none;\n }\n .login-page.login-3 .content-box::before {\n height: 250px;\n width: 350px;\n }\n .login-page.login-3 .content-box::after {\n right: 13%;\n }\n}\n@media (max-width: 992px) {\n .login-page.login-3 .content-box h1 {\n font-size: 15px;\n margin-left: 50px;\n }\n .login-page.login-3 .content-box p {\n display: none;\n }\n .login-page.login-3 .content-bottom {\n width: 600px;\n height: 0px;\n }\n .login-page.login-3 .content-box::before {\n height: 150px;\n width: 250px;\n }\n}\n@media (max-width: 768px) {\n .login-page.login-3 .page-copyright {\n padding-top: 110px;\n }\n .login-page.login-3 .login-box {\n width: 100%;\n max-width: none;\n min-width: 0;\n padding: 30px;\n }\n .login-page.login-3 .content-box {\n display: none;\n }\n}\n\n.page-error-404 {\n background: #55547A;\n}\n.page-error-404 .error-box {\n border-radius: 4px;\n left: 50%;\n margin: 0 auto;\n margin-bottom: 45px;\n padding: 20px;\n position: absolute;\n top: 50%;\n color: #fff;\n transform: translate(-50%, -60%);\n width: 800px;\n}\n.page-error-404 h1 {\n font-size: 10rem;\n color: #5851D8;\n margin-bottom: 2rem;\n}\n.page-error-404 h5 {\n font-size: 2rem;\n color: #fff;\n margin-bottom: 40px;\n}\n\n.bg-yellow {\n background-color: #5851D8;\n color: #55547A;\n}\n.bg-yellow:hover {\n background-color: #443cd3;\n}\n\n.customization .prefix-input {\n max-width: 30%;\n}\n.customization .form-section {\n padding: 8px 15px;\n}\n.customization .invoice-customization-card {\n border: 1px solid #EBF1FA;\n border-radius: 5px;\n}\n@media (max-width: 480px) {\n .customization .address-customization-card .address-fields-container {\n display: flex;\n flex-wrap: wrap;\n }\n .customization .address-customization-card .address-fields-container .fields-list {\n border-right: 0px;\n }\n .customization .tabs .tab {\n padding: 10px 10px;\n }\n}\n\n.settings-container {\n margin-top: 40px;\n}\n.settings-container .settings-sidebar {\n list-style-type: none;\n padding: 0px;\n}\n.settings-container .settings-sidebar .settings-menu-item {\n padding: 10px 0px;\n font-weight: 500;\n font-size: 14px;\n line-height: 18px;\n color: #040405;\n}\n.settings-container .settings-sidebar .settings-menu-item .setting-icon {\n width: 25px;\n color: #B9C1D1;\n font-size: 16px;\n}\n.settings-container .settings-sidebar .link-color {\n color: #A5ACC1;\n display: flex;\n align-items: center;\n}\n.settings-container .settings-sidebar .active-setting {\n color: #5851D8 !important;\n cursor: pointer;\n}\n.settings-container .settings-sidebar .active-setting .setting-icon {\n color: #5851D8 !important;\n}\n.settings-container .setting-main-container .setting-card {\n padding: 30px;\n min-height: 620px;\n}\n.settings-container .setting-main-container .page-header {\n margin: 0px;\n}\n.settings-container .setting-main-container .page-header .page-title {\n margin: 0;\n padding-bottom: 10px;\n font-weight: 500;\n font-size: 17.5px;\n line-height: 21px;\n letter-spacing: 0.1px;\n color: #000000;\n}\n.settings-container .setting-main-container .page-header .page-sub-title {\n max-width: 480px;\n font-size: 14px;\n line-height: 21px;\n color: #A5ACC1;\n margin-bottom: 30px;\n}\n.settings-container .setting-main-container .input-label {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #55547a;\n}\n.settings-container .expense-category td {\n background-color: #F9FBFF !important;\n}\n.settings-container .tax-table td {\n background-color: #F9FBFF !important;\n}\n.settings-container .tax-table .compound-tax {\n display: inline;\n padding: 2px 8px;\n font-size: 10px;\n line-height: 15px;\n background: #FED7D7;\n color: #9B2C2C;\n}\n.settings-container .payment-tab .dropdown-container {\n right: 0;\n left: auto;\n}\n.settings-container .item-tab .dropdown-container {\n right: 0;\n left: auto;\n}\n.settings-container .update-container .verified,\n.settings-container .update-container .not-verified {\n height: 15px;\n width: 15px;\n background-color: #00C99C;\n display: inline-block;\n margin: 0 10px;\n border-radius: 50%;\n}\n.settings-container .update-container .not-verified {\n background-color: #FB7178;\n}\n.settings-container .update-container .update-spinner {\n font-size: 30px;\n color: #A5ACC1;\n}\n.settings-container .update-container .update-steps-container {\n list-style-type: none;\n width: 100%;\n padding: 0px;\n}\n.settings-container .update-container .update-steps-container .update-step {\n display: flex;\n width: 100%;\n justify-content: space-between;\n padding: 10px 0px;\n border-bottom: 1px solid #EBF1FA;\n}\n.settings-container .update-container .update-steps-container .update-step:last-child {\n border-bottom: 0px solid;\n}\n.settings-container .update-container .update-step-text {\n font-size: 1rem;\n margin: 0px;\n line-height: 2rem;\n}\n.settings-container .update-container .update-status-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.settings-container .update-container .update-status-container .update-time {\n font-size: 10px;\n color: #A5ACC1;\n margin-right: 10px;\n}\n.settings-container .update-container .update-status-container .update-status {\n font-size: 13px;\n width: 88px;\n height: 28px;\n display: block;\n text-align: center;\n border-radius: 30px;\n text-transform: uppercase;\n line-height: 2rem;\n}\n.settings-container .update-container .update-status-container .status-pending {\n background-color: #eaf1fb;\n color: #55547A;\n}\n.settings-container .update-container .update-status-container .status-running {\n background-color: rgba(21, 178, 236, 0.15);\n color: #15B2EC;\n}\n.settings-container .update-container .update-status-container .status-finished {\n background-color: #d4f6ee;\n color: #00C99C;\n}\n.settings-container .update-container .update-status-container .status-error {\n background-color: rgba(251, 113, 120, 0.22);\n color: #FB7178;\n}\n.settings-container .add-new-tax {\n height: 45px;\n white-space: nowrap;\n z-index: 1;\n}\n.settings-container .flex-box {\n display: flex;\n}\n.settings-container .left {\n position: relative;\n width: 50px;\n}\n.settings-container .btn-switch {\n position: absolute;\n top: -18px;\n}\n.settings-container .box-title {\n margin-bottom: 5px;\n padding: 0;\n font-size: 16px;\n line-height: 21px;\n color: #55547a;\n}\n.settings-container .box-desc {\n margin: 0;\n padding: 0;\n max-width: 480px;\n font-size: 12px;\n line-height: 18px;\n color: #A5ACC1;\n}\n.settings-container .notes {\n overflow: hidden;\n width: 200px;\n}\n.settings-container .notes .note {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.settings-container .version {\n background: #eaf1fb;\n color: #a5acc1;\n border: 1px solid #eaf1fb;\n box-sizing: border-box;\n border-radius: 5px;\n padding: 10px;\n margin-bottom: 15px;\n}\n\n@media (max-width: 480px) {\n .settings-container .setting-main-container .setting-card {\n overflow: scroll;\n }\n .settings-container .setting-main-container .ml-15 {\n margin-left: 15px;\n }\n .settings-container .setting-main-container .page-header {\n flex-wrap: wrap;\n }\n .settings-container .table-component td:first-child {\n height: auto;\n min-height: 10px;\n text-align: center;\n justify-content: center;\n }\n .settings-container .tax-table .tax-name {\n margin-top: 21px;\n width: 76%;\n }\n .settings-container .expense-category .table-component__table__body tr:first-child td:nth-child(2) {\n height: auto;\n width: 101%;\n }\n .settings-container .add-new-tax {\n position: relative;\n z-index: 1;\n }\n}\n.invoice-create-page {\n position: relative;\n}\n.invoice-create-page .page-header {\n margin: 0 0 40px 0;\n}\n.invoice-create-page .page-header .page-title {\n font-size: 24.5px;\n margin: 0 0 15px 0;\n}\n.invoice-create-page .page-header .breadcrumb .breadcrumb-item {\n font-size: 14px;\n}\n.invoice-create-page .page-header .page-actions .btn-crater {\n margin: 0 0 0 14px;\n}\n.invoice-create-page .invoice-input {\n padding-left: 40px;\n}\n.invoice-create-page .show-customer {\n background: #FFFFFF;\n padding: 0 10px 0 10px;\n min-height: 170px;\n border: 1px solid #EBF1FA;\n}\n.invoice-create-page .show-customer label {\n font-size: 14px;\n margin: 0 0 0 0;\n padding: 0 0 0 0;\n}\n.invoice-create-page .address-menu {\n display: flex;\n flex-direction: column;\n}\n.invoice-create-page .address-menu .title {\n font-size: 15px;\n white-space: nowrap;\n color: #B9C1D1;\n font-weight: 500;\n}\n.invoice-create-page .address-menu .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n.invoice-create-page .address-menu .content label {\n position: relative;\n white-space: nowrap;\n width: 90%;\n font-size: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.invoice-create-page .customer-content {\n display: flex;\n justify-content: space-between;\n}\n.invoice-create-page .customer-content .email {\n flex: 8;\n}\n.invoice-create-page .customer-content .action {\n cursor: pointer;\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #5851D8;\n margin: 0 9px 0 0;\n position: relative;\n}\n.invoice-create-page .add-customer {\n padding: 0 0 0 0;\n}\n.invoice-create-page .add-customer .add-customer-action {\n position: relative;\n display: flex;\n justify-content: center;\n background: #ffffff;\n border: 1px solid #EBF1FA;\n min-height: 170px;\n border-radius: 5px;\n padding: 64px 0;\n}\n.invoice-create-page .add-customer .add-customer-action .customer-icon {\n display: flex;\n justify-content: center;\n background: #EBF1FA;\n width: 40px;\n color: white;\n height: 40px;\n font-size: 14px;\n font-family: Poppins;\n padding: 11px 14px 11px 13px;\n border-radius: 50%;\n margin: 0 15px 0 0;\n}\n.invoice-create-page .add-customer .add-customer-action label {\n font-size: 17.5px;\n margin: 7px 0 0 0;\n}\n.invoice-create-page .customer-required {\n border: 1px solid #FB7178;\n border-radius: 5px;\n}\n.invoice-create-page .offset-md-1 {\n margin-left: 5%;\n}\n.invoice-create-page .invoice-input-group {\n margin-bottom: 41px;\n margin-right: 0;\n}\n.invoice-create-page .invoice-input-group .invoice-input {\n padding-right: 0;\n}\n.invoice-create-page .invoice-input-group .invoice-input label {\n font-family: Poppins;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n color: #263B5E;\n margin: 0 0 10px 0;\n}\n.invoice-create-page .item-table {\n width: 100%;\n text-align: center;\n}\n.invoice-create-page .item-table .item-table-header {\n border: 1px solid #EBF1FA;\n background: white;\n}\n.invoice-create-page .item-table .item-table-header th {\n padding: 10px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 15px;\n line-height: 21px;\n color: #55547A;\n border-top: 1px solid #EBF1FA;\n border-bottom: 1px solid #EBF1FA;\n}\n.invoice-create-page .item-table .item-table-header .item-heading {\n padding-left: 50px;\n}\n.invoice-create-page .item-table .item-table-header .amount-heading {\n padding-right: 50px;\n}\n.invoice-create-page .item-table .item-table-header th:first-child {\n padding-left: 0 !important;\n border-left: 1px solid #EBF1FA;\n}\n.invoice-create-page .item-table .item-table-header th:last-child {\n padding-right: 0 !important;\n border-right: 1px solid #EBF1FA;\n}\n.invoice-create-page .item-table .item-body td:first-child {\n padding-left: 0 !important;\n}\n.invoice-create-page .item-table .item-body td:last-child {\n padding-right: 0 !important;\n}\n.invoice-create-page .item-table .item-body .item-row {\n background: #FFFFFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n border-radius: 0px 0px 5px 5px;\n}\n.invoice-create-page .item-table .item-body .item-row td {\n padding: 15px 20px;\n text-align: left;\n vertical-align: top;\n}\n.invoice-create-page .item-table .item-body .item-row > td {\n padding: 0;\n}\n.invoice-create-page .item-table .item-body .item-row .item-select {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 20px;\n color: #A5ACC1;\n overflow: auto !important;\n max-height: 250px !important;\n}\n.invoice-create-page .item-table .item-body .item-row .search-select .selector-menu {\n top: 45px !important;\n}\n.invoice-create-page .item-table .item-body .item-row .main {\n padding: 0 !important;\n}\n.invoice-create-page .item-table .item-body .item-row .item-amount {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n}\n.invoice-create-page .item-table .item-body .item-row .item-select-wrapper {\n display: flex;\n justify-content: flex-start;\n}\n.invoice-create-page .item-table .item-body .item-row .item-selector {\n flex: 1;\n}\n.invoice-create-page .item-table .item-body .item-row .selected-item {\n display: flex;\n align-items: center;\n height: 40px;\n padding-left: 10px;\n border: 1px solid #EBF1FA;\n background: #F9FBFF;\n border-radius: 5px;\n position: relative;\n}\n.invoice-create-page .item-table .item-body .item-row .deselect-icon {\n color: #B9C1D1;\n position: absolute;\n top: 10px;\n right: 10px;\n cursor: pointer;\n}\n.invoice-create-page .item-table .item-body .item-row .sort-icon-wrapper,\n.invoice-create-page .item-table .item-body .item-row .remove-icon-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0 15px;\n height: 40px;\n width: 20px;\n cursor: pointer;\n}\n.invoice-create-page .item-table .item-body .item-row .sort-icon-wrapper {\n color: #B9C1D1;\n height: 20px;\n margin-top: 8px;\n cursor: move;\n}\n.invoice-create-page .item-table .item-body .item-row .remove-icon {\n color: #55547A;\n}\n.invoice-create-page .tax-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.invoice-create-page .tax-row .tax-amount {\n flex: 3;\n}\n.invoice-create-page .tax-row .tax-select {\n flex: 4;\n}\n.invoice-create-page .tax-tr td {\n padding: 0 21px;\n}\n.invoice-create-page .multi-select-item .multiselect,\n.invoice-create-page .multi-select-item .multiselect__input,\n.invoice-create-page .multi-select-item .multiselect__single {\n border: none;\n display: flex;\n align-items: center;\n}\n.invoice-create-page .multi-select-item .multiselect:focus {\n outline: none;\n}\n.invoice-create-page .multi-select-item .multiselect__input,\n.invoice-create-page .multi-select-item .multiselect__single {\n min-height: 40px;\n padding-left: 10px;\n border: 1px solid #eaf1fb;\n}\n.invoice-create-page .multi-select-item .multiselect__tags {\n min-height: 30px;\n padding: 0;\n border: 0px;\n}\n.invoice-create-page .multi-select-item .multiselect__select {\n line-height: 16px;\n width: 40px;\n height: 38px;\n transition: transform 0.2s ease;\n}\n.invoice-create-page .multi-select-item .multiselect__content-wrapper {\n overflow: hidden;\n border: 1px solid #EBF1FA;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n border-radius: 0px 0px 5px 5px;\n}\n.invoice-create-page .multi-select-item .multiselect__content {\n max-height: 240px;\n overflow: auto;\n}\n.invoice-create-page .add-item-action {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #817AE3;\n padding: 13px 23px;\n width: 100%;\n font-size: 15px;\n border-bottom: 1px solid #EBF1FA;\n cursor: pointer;\n}\n.invoice-create-page .add-item-action:hover {\n background: #EBF1FA;\n}\n.invoice-create-page .add-item-action .icon-fa {\n margin: 2px 11px 0 0;\n}\n.invoice-create-page .invoice-foot {\n display: flex;\n justify-content: space-between;\n margin: 35px 0;\n}\n.invoice-create-page .invoice-foot .btn-template {\n background: #EBF1FA;\n border: 1px solid #EBF1FA;\n color: #040405;\n font-size: 14px;\n}\n.invoice-create-page .invoice-foot .icon-button {\n color: #A5ACC1;\n}\n.invoice-create-page .invoice-foot label {\n font-size: 14px;\n margin: 0 0 0 0;\n}\n.invoice-create-page .invoice-foot .invoice-notes {\n display: flex;\n flex-direction: column;\n margin: 5px 0 0 0;\n}\n.invoice-create-page .invoice-foot .invoice-notes textarea {\n border: 1px solid #EBF1FA;\n border-radius: 5px;\n width: 100%;\n min-height: 100px;\n padding: 0 0 0 0;\n}\n.invoice-create-page .invoice-foot .invoice-total {\n display: flex;\n flex-direction: column;\n background: #ffffff;\n min-width: 390px;\n padding: 15px 20px;\n border: 1px solid #EBF1FA;\n border-radius: 5px;\n}\n.invoice-create-page .invoice-foot .invoice-total > label {\n text-transform: uppercase;\n}\n.invoice-create-page .invoice-foot .invoice-total .section {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 0 0 7px 0;\n}\n.invoice-create-page .invoice-foot .invoice-total .section .invoice-label {\n font-size: 14px;\n font-weight: 600;\n text-transform: uppercase;\n line-height: 21px;\n color: #A5ACC1;\n}\n.invoice-create-page .invoice-foot .invoice-total .section .invoice-amount {\n font-size: 18px;\n color: #55547A;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.invoice-create-page .invoice-foot .invoice-total .section .total {\n color: #817AE3;\n}\n.invoice-create-page .invoice-foot .invoice-total .section .discount-drop-down {\n width: 105px;\n}\n.invoice-create-page .invoice-foot .invoice-total .section .item-dropdown {\n font-family: Arial, Helvetica, sans-serif !important;\n font-size: 16px;\n}\n.invoice-create-page .invoice-foot .invoice-total .border-top {\n margin: 0;\n padding-top: 7px;\n border-top: 1px solid #EBF1FA;\n}\n.invoice-create-page .invoice-foot .invoice-total .tax-selector {\n font-weight: 600;\n font-size: 14px;\n margin-top: 12px;\n line-height: 21px;\n color: #817AE3;\n}\n.invoice-create-page .item-row .item-name {\n font-weight: 500;\n text-align: left;\n font-size: 14px;\n}\n.invoice-create-page .item-row .item-description {\n width: 100%;\n font-weight: 300;\n font-size: 12px;\n padding-top: 2px;\n}\n.invoice-create-page .item-row .item-description textarea {\n border: none;\n resize: none;\n width: 100%;\n padding-left: 11px;\n color: #595959;\n}\n.invoice-create-page .item-row .item-description textarea::placeholder {\n font-family: Poppins;\n font-style: normal;\n font-size: 12px;\n color: #B9C1D1;\n}\n.invoice-create-page .item-row .action {\n font-weight: 500;\n font-size: 14px;\n color: #5851D8;\n cursor: pointer;\n}\n.invoice-create-page .item-row .activator label {\n color: #A5ACC1;\n font-size: 14px;\n}\n.invoice-create-page .item-dropdown {\n display: flex;\n border: 1px solid #EBF1FA !important;\n background-color: #fff !important;\n border-radius: 0px 5px 5px 0px !important;\n justify-content: center;\n align-items: center;\n height: 40px;\n}\n.invoice-create-page .item-dropdown:focus {\n box-shadow: none !important;\n}\n.invoice-create-page .item-discount {\n border-radius: 5px 0px 0px 5px !important;\n height: 40px;\n}\n@media (max-width: 480px) {\n .invoice-create-page .page-header {\n margin-bottom: 13px;\n }\n .invoice-create-page .page-header .invoice-action-btn {\n width: 100%;\n display: flex;\n justify-content: center;\n margin-top: 15px;\n margin-right: 0px !important;\n }\n .invoice-create-page .invoice-customer-container {\n padding-right: 0px;\n }\n .invoice-create-page .collapse-input {\n padding-right: 0px;\n }\n .invoice-create-page .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .invoice-create-page .page-actions button {\n margin-bottom: 10px;\n }\n .invoice-create-page .invoice-input-group .invoice-input {\n padding-right: 15px;\n padding-left: 20px;\n margin-top: 1.5rem;\n }\n .invoice-create-page .invoice-foot {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .invoice-create-page .invoice-foot .btn-template {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n .invoice-create-page .invoice-foot .invoice-total {\n min-width: 384px;\n margin-top: 25px;\n }\n}\n\n.invoice-view-page {\n padding-left: 570px !important;\n}\n.invoice-view-page .invoice-sidebar {\n width: 300px;\n height: 100vh;\n height: 100%;\n left: 240px;\n padding: 60px 0 10px;\n position: fixed;\n top: 0;\n width: 300px;\n z-index: 25;\n background: #FFFFFF;\n}\n.invoice-view-page .inv-search {\n background: #F9FBFF !important;\n}\n.invoice-view-page .side-invoice {\n cursor: pointer;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n border-left: 3px solid transparent;\n}\n.invoice-view-page .side-invoice:last-child {\n margin-bottom: 98px;\n}\n.invoice-view-page .side-invoice.router-link-exact-active {\n border-left: 3px solid #5851D8;\n background-color: #F9FBFF;\n}\n.invoice-view-page .side-invoice:hover {\n background-color: #F9FBFF;\n}\n.invoice-view-page .side-invoice .left .inv-name {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n text-transform: capitalize;\n color: #040405;\n margin-bottom: 6px;\n}\n.invoice-view-page .side-invoice .left .inv-number {\n font-style: normal;\n font-weight: 500;\n font-size: 12px;\n line-height: 18px;\n color: #A5ACC1;\n margin-bottom: 6px;\n}\n.invoice-view-page .side-invoice .left .inv-status {\n font-style: normal;\n font-weight: normal;\n font-size: 10px;\n line-height: 15px;\n padding: 2px 10px;\n display: inline-block;\n}\n.invoice-view-page .side-invoice .right .inv-amount {\n font-style: normal;\n font-weight: 600;\n font-size: 20px;\n line-height: 30px;\n text-align: right;\n color: #263B5E;\n}\n.invoice-view-page .side-invoice .right .inv-date {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n text-align: right;\n color: #A5ACC1;\n}\n.invoice-view-page .no-result {\n color: #B9C1D1;\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n.invoice-view-page .side-header {\n height: 100px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 30px 15px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n}\n.invoice-view-page .side-header .inv-button {\n background: #F9FBFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n color: #B9C1D1;\n box-shadow: none !important;\n}\n.invoice-view-page .side-content {\n overflow-y: scroll;\n height: 100%;\n}\n.invoice-view-page .invoice-view-page-container {\n display: flex;\n flex-direction: column;\n height: 75vh;\n min-height: 0;\n overflow: hidden;\n}\n.invoice-view-page .frame-style {\n flex: 1 1 auto;\n border: 1px solid #B9C1D1;\n border-radius: 7px;\n}\n.invoice-view-page .inv-filter-fields-btn:focus, .invoice-view-page .inv-filter-sorting-btn:focus {\n border-color: inherit;\n box-shadow: none;\n outline: none !important;\n}\n.invoice-view-page .filter-container {\n margin-left: 12px;\n}\n.invoice-view-page .filter-container .filter-title {\n padding: 5px 10px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n margin-bottom: 10px;\n}\n.invoice-view-page .filter-container .filter-items {\n display: flex;\n padding: 4px 9px;\n cursor: pointer;\n}\n.invoice-view-page .filter-container .filter-items:first-child {\n margin-top: auto;\n}\n.invoice-view-page .filter-container .inv-label {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 12px;\n text-transform: capitalize;\n color: #040405;\n margin-bottom: 6px;\n margin-left: 10px;\n cursor: pointer;\n}\n.invoice-view-page .filter-container .base-input {\n width: 20%;\n}\n.invoice-view-page .filter-container .dropdown-container {\n padding: 0px !important;\n left: auto;\n right: 0px;\n width: 155px;\n}\n.invoice-view-page .filter-invoice-date .vdp-datepicker div .vdp-datepicker__clear-button {\n margin-left: -21px;\n margin-top: 2px;\n font-size: 20px;\n font-weight: 800;\n}\n.invoice-view-page .date-group {\n display: flex;\n}\n.invoice-view-page .to-text {\n padding: 8px;\n}\n\n@media (max-width: 768px) {\n .invoice-view-page {\n padding-left: 310px !important;\n }\n\n .invoice-sidebar {\n transition: 0.2s all;\n left: 0px !important;\n }\n}\n.invoice-index-page .table-actions {\n position: relative;\n border: none;\n}\n.invoice-index-page .table-actions .table-actions-button {\n position: absolute;\n right: 0px;\n top: -15px;\n}\n.invoice-index-page .table-actions .table-stats {\n margin: 0;\n position: absolute;\n right: 0px;\n top: 40px;\n}\n.invoice-index-page .filter-container {\n display: flex;\n justify-content: space-between;\n}\n.invoice-index-page .filter-customer, .invoice-index-page .filter-status {\n margin-right: 40px;\n flex: 1;\n}\n.invoice-index-page .filter-date {\n flex: 2;\n display: flex;\n margin-right: 40px;\n align-items: center;\n}\n.invoice-index-page .filter-date .from {\n flex: 1;\n}\n.invoice-index-page .filter-date .to {\n flex: 1;\n}\n.invoice-index-page .filter-invoice {\n flex: 1;\n}\n.invoice-index-page .dashed {\n border: 1px solid #B9C1D1;\n width: 10px;\n margin-top: 28px;\n}\n@media (max-width: 1240px) {\n .invoice-index-page .filter-container {\n flex-direction: column;\n }\n .invoice-index-page .filter-invoice {\n margin-right: 40px;\n }\n .invoice-index-page .filter-customer,\n.invoice-index-page .filter-status,\n.invoice-index-page .filter-date,\n.invoice-index-page .filter-invoice {\n margin-bottom: 10px;\n margin-right: 0px;\n }\n}\n@media (max-width: 480px) {\n .invoice-index-page .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .invoice-index-page .page-actions button {\n margin-bottom: 10px;\n }\n}\n\n.estimate-create-page {\n position: relative;\n}\n.estimate-create-page .page-header {\n margin: 0 0 40px 0;\n}\n.estimate-create-page .page-header .page-title {\n font-size: 24.5px;\n margin: 0 0 15px 0;\n}\n.estimate-create-page .page-header .breadcrumb .breadcrumb-item {\n font-size: 14px;\n}\n.estimate-create-page .page-header .page-actions .btn-crater {\n margin: 0 0 0 14px;\n}\n.estimate-create-page .estimate-input {\n padding-left: 40px;\n}\n.estimate-create-page .show-customer {\n background: #FFFFFF;\n padding: 0 10px 0 10px;\n min-height: 170px;\n border: 1px solid #EBF1FA;\n}\n.estimate-create-page .show-customer label {\n font-size: 14px;\n margin: 0 0 0 0;\n padding: 0 0 0 0;\n}\n.estimate-create-page .address-menu {\n display: flex;\n flex-direction: column;\n}\n.estimate-create-page .address-menu .title {\n font-size: 15px;\n white-space: nowrap;\n color: #B9C1D1;\n font-weight: 500;\n}\n.estimate-create-page .address-menu .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n.estimate-create-page .address-menu .content label {\n position: relative;\n white-space: nowrap;\n width: 90%;\n font-size: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.estimate-create-page .customer-content {\n display: flex;\n justify-content: space-between;\n}\n.estimate-create-page .customer-content .email {\n flex: 8;\n}\n.estimate-create-page .customer-content .action {\n cursor: pointer;\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #5851D8;\n margin: 0 0 0 0;\n position: relative;\n}\n.estimate-create-page .add-customer {\n padding: 0 0 0 0;\n}\n.estimate-create-page .add-customer .add-customer-action {\n position: relative;\n display: flex;\n justify-content: center;\n background: #ffffff;\n border: 1px solid #EBF1FA;\n min-height: 170px;\n border-radius: 5px;\n padding: 64px 0;\n}\n.estimate-create-page .add-customer .add-customer-action .customer-icon {\n display: flex;\n justify-content: center;\n background: #EBF1FA;\n width: 40px;\n color: white;\n height: 40px;\n font-size: 14px;\n font-family: Poppins;\n padding: 11px 14px 11px 13px;\n border-radius: 50%;\n margin: 0 15px 0 0;\n}\n.estimate-create-page .add-customer .add-customer-action label {\n font-size: 17.5px;\n margin: 7px 0 0 0;\n}\n.estimate-create-page .customer-required {\n border: 1px solid #FB7178;\n border-radius: 5px;\n}\n.estimate-create-page .offset-md-1 {\n margin-left: 5%;\n}\n.estimate-create-page .estimate-input-group {\n margin-bottom: 41px;\n margin-right: 0;\n}\n.estimate-create-page .estimate-input-group .estimate-input {\n padding-right: 0;\n}\n.estimate-create-page .estimate-input-group .estimate-input label {\n font-family: Poppins;\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n color: #263B5E;\n margin: 0 0 10px 0;\n}\n.estimate-create-page .item-table {\n width: 100%;\n text-align: center;\n}\n.estimate-create-page .item-table .item-table-header {\n border: 1px solid #EBF1FA;\n background: white;\n}\n.estimate-create-page .item-table .item-table-header th {\n padding: 10px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 15px;\n line-height: 21px;\n color: #55547A;\n border-top: 1px solid #EBF1FA;\n border-bottom: 1px solid #EBF1FA;\n}\n.estimate-create-page .item-table .item-table-header .item-heading {\n padding-left: 50px;\n}\n.estimate-create-page .item-table .item-table-header .amount-heading {\n padding-right: 50px;\n}\n.estimate-create-page .item-table .item-table-header th:first-child {\n padding-left: 0 !important;\n border-left: 1px solid #EBF1FA;\n}\n.estimate-create-page .item-table .item-table-header th:last-child {\n padding-right: 0 !important;\n border-right: 1px solid #EBF1FA;\n}\n.estimate-create-page .item-table .item-body td:first-child {\n padding-left: 0 !important;\n}\n.estimate-create-page .item-table .item-body td:last-child {\n padding-right: 0 !important;\n}\n.estimate-create-page .item-table .item-body .item-row {\n background: #FFFFFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n border-radius: 0px 0px 5px 5px;\n}\n.estimate-create-page .item-table .item-body .item-row td {\n padding: 15px 20px;\n text-align: left;\n vertical-align: top;\n}\n.estimate-create-page .item-table .item-body .item-row > td {\n padding: 0;\n}\n.estimate-create-page .item-table .item-body .item-row .item-select {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 20px;\n color: #A5ACC1;\n overflow: auto !important;\n max-height: 250px !important;\n}\n.estimate-create-page .item-table .item-body .item-row .search-select .selector-menu {\n top: 45px !important;\n}\n.estimate-create-page .item-table .item-body .item-row .main {\n padding: 0 !important;\n}\n.estimate-create-page .item-table .item-body .item-row .item-amount {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n}\n.estimate-create-page .item-table .item-body .item-row .item-select-wrapper {\n display: flex;\n justify-content: flex-start;\n}\n.estimate-create-page .item-table .item-body .item-row .item-selector {\n flex: 1;\n}\n.estimate-create-page .item-table .item-body .item-row .selected-item {\n display: flex;\n align-items: center;\n height: 40px;\n padding-left: 10px;\n border: 1px solid #EBF1FA;\n background: #F9FBFF;\n border-radius: 5px;\n position: relative;\n}\n.estimate-create-page .item-table .item-body .item-row .deselect-icon {\n color: #B9C1D1;\n position: absolute;\n top: 10px;\n right: 10px;\n cursor: pointer;\n}\n.estimate-create-page .item-table .item-body .item-row .sort-icon-wrapper,\n.estimate-create-page .item-table .item-body .item-row .remove-icon-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0 15px;\n height: 40px;\n width: 20px;\n cursor: pointer;\n}\n.estimate-create-page .item-table .item-body .item-row .sort-icon-wrapper {\n color: #B9C1D1;\n height: 20px;\n margin-top: 8px;\n cursor: move;\n}\n.estimate-create-page .item-table .item-body .item-row .remove-icon {\n color: #55547A;\n}\n.estimate-create-page .tax-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.estimate-create-page .tax-row .tax-amount {\n flex: 3;\n}\n.estimate-create-page .tax-row .tax-select {\n flex: 4;\n}\n.estimate-create-page .tax-tr td {\n padding: 0 21px;\n}\n.estimate-create-page .multi-select-item .multiselect,\n.estimate-create-page .multi-select-item .multiselect__input,\n.estimate-create-page .multi-select-item .multiselect__single {\n border: none;\n display: flex;\n align-items: center;\n}\n.estimate-create-page .multi-select-item .multiselect:focus {\n outline: none;\n}\n.estimate-create-page .multi-select-item .multiselect__input,\n.estimate-create-page .multi-select-item .multiselect__single {\n min-height: 40px;\n padding-left: 10px;\n border: 1px solid #eaf1fb;\n}\n.estimate-create-page .multi-select-item .multiselect__tags {\n min-height: 30px;\n padding: 0;\n border: 0px;\n}\n.estimate-create-page .multi-select-item .multiselect__select {\n line-height: 16px;\n width: 40px;\n height: 38px;\n transition: transform 0.2s ease;\n}\n.estimate-create-page .multi-select-item .multiselect__content-wrapper {\n overflow: hidden;\n border: 1px solid #EBF1FA;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n border-radius: 0px 0px 5px 5px;\n}\n.estimate-create-page .multi-select-item .multiselect__content {\n max-height: 240px;\n overflow: auto;\n}\n.estimate-create-page .add-item-action {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #817AE3;\n padding: 13px 23px;\n width: 100%;\n font-size: 15px;\n border-bottom: 1px solid #EBF1FA;\n cursor: pointer;\n}\n.estimate-create-page .add-item-action:hover {\n background: #EBF1FA;\n}\n.estimate-create-page .add-item-action .icon-fa {\n margin: 2px 11px 0 0;\n}\n.estimate-create-page .estimate-foot {\n display: flex;\n justify-content: space-between;\n margin: 35px 0;\n}\n.estimate-create-page .estimate-foot .btn-template {\n background: #EBF1FA;\n border: 1px solid #EBF1FA;\n color: #040405;\n font-size: 14px;\n}\n.estimate-create-page .estimate-foot .icon-button {\n color: #A5ACC1;\n}\n.estimate-create-page .estimate-foot label {\n font-size: 14px;\n margin: 0 0 0 0;\n}\n.estimate-create-page .estimate-foot .estimate-notes {\n display: flex;\n flex-direction: column;\n margin: 5px 0 0 0;\n}\n.estimate-create-page .estimate-foot .estimate-notes textarea {\n border: 1px solid #EBF1FA;\n border-radius: 5px;\n width: 100%;\n min-height: 100px;\n padding: 0 0 0 0;\n}\n.estimate-create-page .estimate-foot .estimate-total {\n display: flex;\n flex-direction: column;\n background: #ffffff;\n min-width: 390px;\n padding: 15px 20px;\n border: 1px solid #EBF1FA;\n border-radius: 5px;\n}\n.estimate-create-page .estimate-foot .estimate-total > label {\n text-transform: uppercase;\n}\n.estimate-create-page .estimate-foot .estimate-total .section {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 0 0 7px 0;\n}\n.estimate-create-page .estimate-foot .estimate-total .section .estimate-label {\n font-size: 14px;\n font-weight: 600;\n text-transform: uppercase;\n line-height: 21px;\n color: #A5ACC1;\n}\n.estimate-create-page .estimate-foot .estimate-total .section .estimate-amount {\n font-size: 18px;\n color: #55547A;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.estimate-create-page .estimate-foot .estimate-total .section .total {\n color: #817AE3;\n}\n.estimate-create-page .estimate-foot .estimate-total .section .discount-drop-down {\n width: 105px;\n}\n.estimate-create-page .estimate-foot .estimate-total .section .item-dropdown {\n font-family: Arial, Helvetica, sans-serif !important;\n font-size: 16px;\n}\n.estimate-create-page .estimate-foot .estimate-total .border-top {\n margin: 0;\n padding-top: 7px;\n border-top: 1px solid #EBF1FA;\n}\n.estimate-create-page .estimate-foot .estimate-total .tax-selector {\n font-weight: 600;\n font-size: 14px;\n margin-top: 12px;\n line-height: 21px;\n color: #817AE3;\n}\n.estimate-create-page .item-row .item-name {\n font-weight: 500;\n text-align: left;\n font-size: 14px;\n}\n.estimate-create-page .item-row .item-description {\n width: 100%;\n font-weight: 300;\n font-size: 12px;\n padding-top: 2px;\n}\n.estimate-create-page .item-row .item-description textarea {\n border: none;\n resize: none;\n width: 100%;\n color: #595959;\n}\n.estimate-create-page .item-row .item-description textarea::placeholder {\n font-family: Poppins;\n font-style: normal;\n font-size: 12px;\n color: #B9C1D1;\n}\n.estimate-create-page .item-row .action {\n font-weight: 500;\n font-size: 14px;\n color: #5851D8;\n cursor: pointer;\n}\n.estimate-create-page .item-row .activator label {\n color: #A5ACC1;\n font-size: 14px;\n}\n.estimate-create-page .item-dropdown {\n display: flex;\n border: 1px solid #EBF1FA !important;\n background-color: #fff !important;\n border-radius: 0px 5px 5px 0px !important;\n justify-content: center;\n align-items: center;\n height: 40px;\n}\n.estimate-create-page .item-dropdown:focus {\n box-shadow: none !important;\n}\n.estimate-create-page .item-discount {\n border-radius: 5px 0px 0px 5px !important;\n height: 40px;\n}\n@media (max-width: 480px) {\n .estimate-create-page .page-header {\n margin-bottom: 13px;\n }\n .estimate-create-page .page-header .invoice-action-btn {\n width: 100%;\n display: flex;\n justify-content: center;\n margin-top: 15px;\n margin-right: 0px !important;\n }\n .estimate-create-page .estimate-customer-container {\n padding-right: 0px;\n }\n .estimate-create-page .collapse-input {\n padding-right: 0px;\n }\n .estimate-create-page .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .estimate-create-page .page-actions button {\n margin-bottom: 10px;\n }\n .estimate-create-page .estimate-input-group .estimate-input {\n padding-right: 15px;\n padding-left: 20px;\n margin-top: 1.5rem;\n }\n .estimate-create-page .estimate-foot {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .estimate-create-page .estimate-foot .btn-template {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n .estimate-create-page .estimate-foot .estimate-total {\n min-width: 384px;\n margin-top: 25px;\n }\n}\n\n.estimate-index-page .table-actions {\n position: relative;\n border: none;\n}\n.estimate-index-page .table-actions .table-actions-button {\n position: absolute;\n right: 0px;\n top: -15px;\n}\n.estimate-index-page .table-actions .table-stats {\n margin: 0;\n position: absolute;\n right: 0px;\n top: 40px;\n}\n.estimate-index-page .filter-container {\n display: flex;\n justify-content: space-between;\n}\n.estimate-index-page .filter-customer {\n margin-right: 40px;\n flex: 1;\n}\n.estimate-index-page .filter-status {\n margin-right: 40px;\n flex: 1;\n}\n.estimate-index-page .filter-date {\n flex: 2;\n display: flex;\n margin-right: 40px;\n align-items: center;\n}\n.estimate-index-page .filter-date .from {\n flex: 1;\n}\n.estimate-index-page .filter-date .to {\n flex: 1;\n}\n.estimate-index-page .filter-estimate {\n flex: 1;\n}\n.estimate-index-page .dashed {\n border: 1px solid #B9C1D1;\n width: 10px;\n margin-top: 28px;\n}\n@media (max-width: 1240px) {\n .estimate-index-page .filter-container {\n flex-direction: column;\n }\n .estimate-index-page .filter-estimate {\n margin-right: 40px;\n }\n .estimate-index-page .filter-customer,\n.estimate-index-page .filter-status,\n.estimate-index-page .filter-date,\n.estimate-index-page .filter-estimate {\n margin-bottom: 10px;\n margin-right: 0px;\n }\n}\n@media (max-width: 480px) {\n .estimate-index-page .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .estimate-index-page .page-actions button {\n margin-bottom: 10px;\n }\n}\n\n.estimate-view-page {\n padding-left: 570px !important;\n}\n.estimate-view-page .estimate-sidebar {\n width: 300px;\n height: 100vh;\n height: 100%;\n left: 240px;\n padding: 60px 0 10px;\n position: fixed;\n top: 0;\n width: 300px;\n z-index: 30;\n background: #ffffff;\n}\n.estimate-view-page .inv-search {\n background: #F9FBFF !important;\n}\n.estimate-view-page .side-estimate {\n cursor: pointer;\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n border-left: 3px solid transparent;\n}\n.estimate-view-page .side-estimate:last-child {\n margin-bottom: 98px;\n}\n.estimate-view-page .side-estimate.router-link-exact-active {\n border-left: 3px solid #5851D8;\n background-color: #F9FBFF;\n}\n.estimate-view-page .side-estimate:hover {\n background-color: #F9FBFF;\n}\n.estimate-view-page .side-estimate .left .status-expired {\n background: #FED7D7;\n font-size: 13px;\n color: #9B2C2C;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .status-accepted {\n background: #D5EED0;\n font-size: 13px;\n color: #354930;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .status-sent {\n background: rgba(246, 208, 154, 0.4);\n font-size: 13px;\n color: #A96E1A;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .status-viewed {\n background: #C9E3EC;\n font-size: 13px;\n color: #1E576C;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .status-pending {\n background: #FED7D7;\n font-size: 13px;\n color: #9B2C2C;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .status-rejected {\n background: #E1E0EA;\n font-size: 13px;\n color: #312F57;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .status-draft {\n background: #F8EDCB;\n font-size: 13px;\n color: #6C432E;\n padding: 5px 10px;\n}\n.estimate-view-page .side-estimate .left .inv-name {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n text-transform: capitalize;\n color: #040405;\n margin-bottom: 6px;\n}\n.estimate-view-page .side-estimate .left .inv-number {\n font-style: normal;\n font-weight: 500;\n font-size: 12px;\n line-height: 18px;\n color: #595959;\n margin-bottom: 6px;\n}\n.estimate-view-page .side-estimate .left .inv-status {\n font-style: normal;\n font-weight: normal;\n font-size: 10px;\n line-height: 15px;\n padding: 2px 10px;\n display: inline-block;\n}\n.estimate-view-page .side-estimate .right .inv-amount {\n font-style: normal;\n font-weight: 600;\n font-size: 20px;\n line-height: 30px;\n text-align: right;\n color: #263B5E;\n}\n.estimate-view-page .side-estimate .right .inv-date {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n text-align: right;\n color: #595959;\n}\n.estimate-view-page .no-result {\n color: #B9C1D1;\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n.estimate-view-page .side-header {\n height: 100px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 30px 15px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n}\n.estimate-view-page .side-header .inv-button {\n background: #F9FBFF;\n border: 1px solid #eaf1fb;\n box-sizing: border-box;\n color: #A5ACC1;\n box-shadow: none !important;\n}\n.estimate-view-page .side-content {\n overflow-y: scroll;\n height: 100%;\n}\n.estimate-view-page .estimate-view-page-container {\n display: flex;\n flex-direction: column;\n height: 75vh;\n min-height: 0;\n overflow: hidden;\n}\n.estimate-view-page .frame-style {\n flex: 1 1 auto;\n border: 1px solid #B9C1D1;\n border-radius: 7px;\n}\n.estimate-view-page .inv-filter-fields-btn:focus,\n.estimate-view-page .inv-filter-sorting-btn:focus {\n outline: none !important;\n box-shadow: 0 0 0 0.09rem rgba(111, 110, 142, 0.5) !important;\n}\n.estimate-view-page .filter-container {\n margin-left: 12px;\n}\n.estimate-view-page .filter-container .filter-title {\n padding: 5px 10px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n margin-bottom: 10px;\n}\n.estimate-view-page .filter-container .filter-items {\n display: flex;\n padding: 4px 9px;\n cursor: pointer;\n}\n.estimate-view-page .filter-container .filter-items:first-child {\n margin-top: auto;\n}\n.estimate-view-page .filter-container .inv-label {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 12px;\n text-transform: capitalize;\n color: #040405;\n margin-bottom: 6px;\n margin-left: 10px;\n cursor: pointer;\n}\n.estimate-view-page .filter-container .base-input {\n width: 20%;\n}\n.estimate-view-page .filter-container .dropdown-container {\n padding: 0px !important;\n left: auto;\n right: 0px;\n width: 166px;\n}\n.estimate-view-page .filter-estimate-date .vdp-datepicker div .vdp-datepicker__clear-button {\n margin-left: -21px;\n margin-top: 2px;\n font-size: 20px;\n font-weight: 800;\n}\n.estimate-view-page .date-group {\n display: flex;\n}\n.estimate-view-page .to-text {\n padding: 8px;\n}\n\n@media (max-width: 768px) {\n .estimate-view-page {\n padding-left: 310px !important;\n }\n\n .estimate-sidebar {\n transition: 0.2s all;\n left: 0px !important;\n }\n}\n.expenses .collapse-button-container {\n display: none;\n}\n.expenses .collapse-button-container .collapse-button {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n.expenses .notes {\n overflow: hidden;\n width: 200px;\n}\n.expenses .notes .note {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n@media (max-width: 480px) {\n .expenses .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .expenses .page-actions button {\n margin-bottom: 10px;\n }\n .expenses .page-header {\n margin-bottom: 5px;\n }\n .expenses .table-actions {\n margin-top: 0px !important;\n }\n .expenses .header-button-container {\n display: none;\n }\n .expenses .collapse-button-container {\n margin-top: 8px;\n display: block;\n }\n}\n@media (max-width: 480px) {\n .payments .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .payments .page-actions button {\n margin-bottom: 10px;\n }\n .payments .page-header {\n margin-bottom: 5px;\n }\n .payments .table-actions {\n margin-top: 0px !important;\n }\n}\n.payment-create .header-button-container {\n display: block;\n}\n.payment-create .collapse-button-container {\n display: none;\n}\n.payment-create .collapse-button-container .collapse-button {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\n@media (max-width: 480px) {\n .payment-create .page-actions, .payment-index .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .payment-create .page-actions button, .payment-index .page-actions button {\n margin-bottom: 10px;\n }\n .payment-create .header-button-container, .payment-index .header-button-container {\n display: none;\n }\n .payment-create .collapse-button-container, .payment-index .collapse-button-container {\n display: block;\n }\n}\n.settings-container {\n margin-top: 40px;\n}\n.settings-container .settings-sidebar {\n list-style-type: none;\n padding: 0px;\n}\n.settings-container .settings-sidebar .settings-menu-item {\n padding: 10px 0px;\n font-weight: 500;\n font-size: 14px;\n line-height: 18px;\n color: #040405;\n}\n.settings-container .settings-sidebar .settings-menu-item .setting-icon {\n width: 25px;\n color: #B9C1D1;\n font-size: 16px;\n}\n.settings-container .settings-sidebar .link-color {\n color: #A5ACC1;\n display: flex;\n align-items: center;\n}\n.settings-container .settings-sidebar .active-setting {\n color: #5851D8 !important;\n cursor: pointer;\n}\n.settings-container .settings-sidebar .active-setting .setting-icon {\n color: #5851D8 !important;\n}\n.settings-container .setting-main-container .setting-card {\n padding: 30px;\n min-height: 620px;\n}\n.settings-container .setting-main-container .page-header {\n margin: 0px;\n}\n.settings-container .setting-main-container .page-header .page-title {\n margin: 0;\n padding-bottom: 10px;\n font-weight: 500;\n font-size: 17.5px;\n line-height: 21px;\n letter-spacing: 0.1px;\n color: #000000;\n}\n.settings-container .setting-main-container .page-header .page-sub-title {\n max-width: 480px;\n font-size: 14px;\n line-height: 21px;\n color: #A5ACC1;\n margin-bottom: 30px;\n}\n.settings-container .setting-main-container .input-label {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #55547a;\n}\n.settings-container .expense-category td {\n background-color: #F9FBFF !important;\n}\n.settings-container .tax-table td {\n background-color: #F9FBFF !important;\n}\n.settings-container .tax-table .compound-tax {\n display: inline;\n padding: 2px 8px;\n font-size: 10px;\n line-height: 15px;\n background: #FED7D7;\n color: #9B2C2C;\n}\n.settings-container .payment-tab .dropdown-container {\n right: 0;\n left: auto;\n}\n.settings-container .item-tab .dropdown-container {\n right: 0;\n left: auto;\n}\n.settings-container .update-container .verified,\n.settings-container .update-container .not-verified {\n height: 15px;\n width: 15px;\n background-color: #00C99C;\n display: inline-block;\n margin: 0 10px;\n border-radius: 50%;\n}\n.settings-container .update-container .not-verified {\n background-color: #FB7178;\n}\n.settings-container .update-container .update-spinner {\n font-size: 30px;\n color: #A5ACC1;\n}\n.settings-container .update-container .update-steps-container {\n list-style-type: none;\n width: 100%;\n padding: 0px;\n}\n.settings-container .update-container .update-steps-container .update-step {\n display: flex;\n width: 100%;\n justify-content: space-between;\n padding: 10px 0px;\n border-bottom: 1px solid #EBF1FA;\n}\n.settings-container .update-container .update-steps-container .update-step:last-child {\n border-bottom: 0px solid;\n}\n.settings-container .update-container .update-step-text {\n font-size: 1rem;\n margin: 0px;\n line-height: 2rem;\n}\n.settings-container .update-container .update-status-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.settings-container .update-container .update-status-container .update-time {\n font-size: 10px;\n color: #A5ACC1;\n margin-right: 10px;\n}\n.settings-container .update-container .update-status-container .update-status {\n font-size: 13px;\n width: 88px;\n height: 28px;\n display: block;\n text-align: center;\n border-radius: 30px;\n text-transform: uppercase;\n line-height: 2rem;\n}\n.settings-container .update-container .update-status-container .status-pending {\n background-color: #eaf1fb;\n color: #55547A;\n}\n.settings-container .update-container .update-status-container .status-running {\n background-color: rgba(21, 178, 236, 0.15);\n color: #15B2EC;\n}\n.settings-container .update-container .update-status-container .status-finished {\n background-color: #d4f6ee;\n color: #00C99C;\n}\n.settings-container .update-container .update-status-container .status-error {\n background-color: rgba(251, 113, 120, 0.22);\n color: #FB7178;\n}\n.settings-container .add-new-tax {\n height: 45px;\n white-space: nowrap;\n z-index: 1;\n}\n.settings-container .flex-box {\n display: flex;\n}\n.settings-container .left {\n position: relative;\n width: 50px;\n}\n.settings-container .btn-switch {\n position: absolute;\n top: -18px;\n}\n.settings-container .box-title {\n margin-bottom: 5px;\n padding: 0;\n font-size: 16px;\n line-height: 21px;\n color: #55547a;\n}\n.settings-container .box-desc {\n margin: 0;\n padding: 0;\n max-width: 480px;\n font-size: 12px;\n line-height: 18px;\n color: #A5ACC1;\n}\n.settings-container .notes {\n overflow: hidden;\n width: 200px;\n}\n.settings-container .notes .note {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.settings-container .version {\n background: #eaf1fb;\n color: #a5acc1;\n border: 1px solid #eaf1fb;\n box-sizing: border-box;\n border-radius: 5px;\n padding: 10px;\n margin-bottom: 15px;\n}\n\n@media (max-width: 480px) {\n .settings-container .setting-main-container .setting-card {\n overflow: scroll;\n }\n .settings-container .setting-main-container .ml-15 {\n margin-left: 15px;\n }\n .settings-container .setting-main-container .page-header {\n flex-wrap: wrap;\n }\n .settings-container .table-component td:first-child {\n height: auto;\n min-height: 10px;\n text-align: center;\n justify-content: center;\n }\n .settings-container .tax-table .tax-name {\n margin-top: 21px;\n width: 76%;\n }\n .settings-container .expense-category .table-component__table__body tr:first-child td:nth-child(2) {\n height: auto;\n width: 101%;\n }\n .settings-container .add-new-tax {\n position: relative;\n z-index: 1;\n }\n}\n.wizard .logo-main {\n height: 50px;\n}\n.wizard .wizard-card {\n padding: 30px;\n width: 100%;\n}\n.wizard .row {\n margin-bottom: 27px;\n}\n.wizard .form-content {\n margin-top: 70px;\n display: flex;\n justify-content: center;\n}\n.wizard .form-title {\n font-style: normal;\n font-weight: 600;\n font-size: 24.5px;\n line-height: 29px;\n color: #000000;\n}\n.wizard .form-desc {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n color: #A5ACC1;\n width: 55%;\n margin-bottom: 30px;\n}\n.wizard .form-label {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n}\n.wizard .step-indicator {\n padding-top: 40px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n height: 120px;\n}\n.wizard .indicator-line {\n border: 5px solid #EBF1FA;\n border-radius: 5px;\n box-sizing: border-box;\n width: 520px;\n position: relative;\n display: flex;\n justify-content: space-around;\n margin-top: 60px;\n}\n.wizard .indicator-line .center {\n position: absolute;\n top: -11px;\n width: 105%;\n display: flex;\n justify-content: space-between;\n}\n.wizard .indicator-line .steps {\n border-radius: 50%;\n float: left;\n border: 5px solid #EBF1FA;\n padding: 0px 5px;\n height: 21px;\n width: 21px;\n background: #EBF1FA;\n}\n.wizard .indicator-line .steps.active {\n border: 5px solid #5851d8;\n background: #ffffff;\n border-radius: 50%;\n height: 21px;\n width: 21px;\n}\n.wizard .indicator-line .steps.completed {\n padding: 0px;\n background: #5851d8;\n border: 5px solid #5851d8;\n border-radius: 50%;\n height: 21px;\n width: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.wizard .indicator-line .steps.completed .icon-check {\n font-style: normal;\n font-weight: 900;\n font-size: 12px;\n /* line-height: 21px; */\n color: #ffffff;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.wizard .upload-logo {\n position: absolute;\n right: 60px;\n}\n.wizard .upload-logo .preview-logo {\n height: 50px;\n max-width: 300px;\n padding: 10px;\n border: 4px solid #EBF1FA;\n}\n.wizard .list-items {\n display: flex;\n justify-content: space-between;\n margin-bottom: 0;\n border: 1px solid #EBF1FA;\n}\n.wizard .list-items .left-item,\n.wizard .list-items .right-item {\n padding: 12px 10px;\n margin-bottom: 0;\n}\n.wizard .list-items .right-item {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.wizard .verified,\n.wizard .not-verified {\n height: 15px;\n width: 15px;\n background-color: #00C99C;\n display: inline-block;\n margin: 0 10px;\n border-radius: 50%;\n}\n.wizard .not-verified {\n background-color: #FB7178;\n}\n\n.reports .reports-tab-container {\n margin-top: 25px;\n}\n.reports .reports-frame-style {\n height: 100vh;\n width: 100%;\n border: 1px solid #B9C1D1;\n border-radius: 7px;\n}\n.reports .report-button {\n width: auto;\n}\n.reports .report-view-button {\n display: none;\n color: #fff;\n}\n.reports .report-fields-container {\n margin-top: 25px;\n}\n.reports .report-field-container {\n margin-top: auto;\n}\n.reports .report-submit-button-container {\n margin-top: 32px;\n}\n.reports .report-label {\n font-size: 14px;\n line-height: 21px;\n color: #55547A;\n}\n.reports .report-label {\n font-weight: 500;\n color: #55547A;\n font-size: 14px;\n}\n\n@media (max-width: 480px) {\n .reports .reports-tab {\n padding: 10px 19px;\n }\n .reports .reports-frame-style {\n display: none;\n }\n .reports .report-submit-button-container {\n display: none;\n }\n .reports .report-view-button {\n display: flex;\n color: #fff !important;\n justify-content: center;\n }\n .reports .report-button {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n .reports .report-fields-container {\n margin-top: 0px;\n }\n .reports .report-field-container {\n margin-top: 20px;\n }\n .reports .tabs .tab {\n padding: 10px 15px;\n }\n .reports .tabs .tab .tab-link {\n padding: 10px 17px !important;\n }\n}\n.customer-create .section-title {\n font-style: normal;\n font-weight: 500;\n font-size: 17.5px;\n line-height: 21px;\n letter-spacing: 0.1px;\n color: #000000;\n}\n.customer-create .form-label {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 21px;\n color: #55547A;\n}\n.customer-create .customer-card {\n border: 1px solid #EBF1FA;\n padding: 10px;\n}\n.customer-create .same-address-checkbox-container {\n display: flex;\n margin-bottom: 1.5rem;\n align-items: center;\n justify-content: flex-end;\n}\n.customer-create hr {\n margin-bottom: 1.8rem;\n border: 1px solid #EBF1FA;\n}\n.customer-create .header-button-container {\n display: block;\n}\n.customer-create .collapse-button-container {\n display: none;\n}\n.customer-create .collapse-button-container .collapse-button {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\n@media (max-width: 480px) {\n .customer-index .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .customer-index .page-actions button {\n margin-bottom: 10px;\n }\n\n .customer-create .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .customer-create .page-actions button {\n margin-bottom: 10px;\n }\n .customer-create .same-address-checkbox-container {\n display: flex;\n justify-content: flex-start;\n margin-bottom: 0rem;\n }\n .customer-create hr {\n margin-bottom: 1.2rem;\n border: 1px solid #EBF1FA;\n }\n .customer-create .section-title {\n padding: 15px;\n }\n .customer-create .collapse-button-container {\n display: block;\n }\n .customer-create .header-button-container {\n display: none;\n }\n}\n@media (max-width: 480px) {\n .payments .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .payments .page-actions button {\n margin-bottom: 10px;\n }\n .payments .page-header {\n margin-bottom: 5px;\n }\n .payments .table-actions {\n margin-top: 0px !important;\n }\n}\n.payment-create .header-button-container {\n display: block;\n}\n.payment-create .collapse-button-container {\n display: none;\n}\n.payment-create .collapse-button-container .collapse-button {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\n@media (max-width: 480px) {\n .payment-create .page-actions, .payment-index .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .payment-create .page-actions button, .payment-index .page-actions button {\n margin-bottom: 10px;\n }\n .payment-create .header-button-container, .payment-index .header-button-container {\n display: none;\n }\n .payment-create .collapse-button-container, .payment-index .collapse-button-container {\n display: block;\n }\n}\n.payment-view-page {\n padding-left: 570px !important;\n}\n.payment-view-page .payment-sidebar {\n width: 300px;\n height: 100vh;\n height: 100%;\n left: 240px;\n padding: 60px 0 10px;\n position: fixed;\n top: 0;\n width: 300px;\n z-index: 25;\n background: #FFFFFF;\n}\n.payment-view-page .inv-search {\n background: #F9FBFF !important;\n}\n.payment-view-page .side-payment {\n padding: 12px 16px;\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n cursor: pointer;\n}\n.payment-view-page .side-payment:last-child {\n margin-bottom: 98px;\n}\n.payment-view-page .side-payment.router-link-exact-active {\n border-left: 3px solid #5851D8;\n background-color: #F9FBFF;\n}\n.payment-view-page .side-payment:hover {\n background-color: #F9FBFF;\n}\n.payment-view-page .side-payment .left .inv-name {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n text-transform: capitalize;\n color: #040405;\n margin-bottom: 6px;\n}\n.payment-view-page .side-payment .left .inv-number {\n font-style: normal;\n font-weight: 500;\n font-size: 12px;\n line-height: 18px;\n color: #A5ACC1;\n margin-bottom: 6px;\n}\n.payment-view-page .side-payment .left .inv-status {\n font-style: normal;\n font-weight: normal;\n font-size: 10px;\n line-height: 15px;\n padding: 2px 10px;\n display: inline-block;\n}\n.payment-view-page .side-payment .right .inv-amount {\n font-style: normal;\n font-weight: 600;\n font-size: 20px;\n line-height: 30px;\n text-align: right;\n color: #263B5E;\n}\n.payment-view-page .side-payment .right .inv-date {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 21px;\n text-align: right;\n color: #A5ACC1;\n}\n.payment-view-page .no-result {\n color: #B9C1D1;\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n.payment-view-page .side-header {\n height: 100px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 30px 15px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n}\n.payment-view-page .side-header .inv-button {\n background: #F9FBFF;\n border: 1px solid #EBF1FA;\n box-sizing: border-box;\n color: #B9C1D1;\n box-shadow: none !important;\n}\n.payment-view-page .side-content {\n overflow-y: scroll;\n height: 100%;\n}\n.payment-view-page .payment-view-page-container {\n display: flex;\n flex-direction: column;\n height: 75vh;\n min-height: 0;\n overflow: hidden;\n}\n.payment-view-page .frame-style {\n flex: 1 1 auto;\n border: 1px solid #B9C1D1;\n border-radius: 7px;\n}\n.payment-view-page .inv-filter-fields-btn:focus, .payment-view-page .inv-filter-sorting-btn:focus {\n border-color: inherit;\n box-shadow: none;\n outline: none !important;\n}\n.payment-view-page .filter-container {\n margin-left: 12px;\n}\n.payment-view-page .filter-container .filter-title {\n padding: 5px 10px;\n border-bottom: 1px solid rgba(185, 193, 209, 0.41);\n margin-bottom: 10px;\n}\n.payment-view-page .filter-container .filter-items {\n display: flex;\n padding: 4px 9px;\n cursor: pointer;\n}\n.payment-view-page .filter-container .filter-items:first-child {\n margin-top: auto;\n}\n.payment-view-page .filter-container .inv-label {\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 12px;\n text-transform: capitalize;\n color: #040405;\n margin-bottom: 6px;\n margin-left: 10px;\n cursor: pointer;\n}\n.payment-view-page .filter-container .base-input {\n width: 20%;\n}\n.payment-view-page .filter-container .dropdown-container {\n padding: 0px !important;\n left: auto;\n right: 0px;\n width: 167px;\n}\n.payment-view-page .filter-payment-date .vdp-datepicker div .vdp-datepicker__clear-button {\n margin-left: -21px;\n margin-top: 2px;\n font-size: 20px;\n font-weight: 800;\n}\n.payment-view-page .date-group {\n display: flex;\n}\n.payment-view-page .to-text {\n padding: 8px;\n}\n\n@media (max-width: 768px) {\n .payment-view-page {\n padding-left: 310px !important;\n }\n\n .payment-sidebar {\n transition: 0.2s all;\n left: 0px !important;\n }\n}\n.items .table-loader {\n padding: 25px 0px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@media (max-width: 480px) {\n .items .page-actions {\n position: relative;\n -webkit-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n display: flex;\n flex-wrap: wrap;\n }\n .items .page-actions button {\n margin-bottom: 10px;\n }\n .items .page-header {\n margin-bottom: 5px;\n }\n .items .table-actions {\n margin-top: 0px !important;\n }\n}\n.item-create .collapse-button {\n width: auto;\n}\n\n@media (max-width: 480px) {\n .item-create .collapse-button {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n}\n.inv-status-overdue {\n background: #FED7D7;\n font-size: 13px;\n color: #9B2C2C;\n padding: 5px 10px;\n}\n\n.inv-status-paid {\n background: #D5EED0;\n font-size: 13px;\n color: #354930;\n padding: 5px 10px;\n}\n\n.inv-status-unpaid {\n background: #F8EDCB;\n font-size: 13px;\n color: #6C432E;\n padding: 5px 10px;\n}\n\n.inv-status-sent {\n background: rgba(246, 208, 154, 0.4);\n font-size: 13px;\n color: #A96E1A;\n padding: 5px 10px;\n}\n\n.inv-status-viewed {\n background: #C9E3EC;\n font-size: 13px;\n color: #1E576C;\n padding: 5px 10px;\n}\n\n.inv-status-completed {\n background: #D5EED0;\n font-size: 13px;\n color: #354930;\n padding: 5px 10px;\n}\n\n.inv-status-pending {\n background: #FED7D7;\n font-size: 13px;\n color: #9B2C2C;\n padding: 5px 10px;\n}\n\n.inv-status-partially_paid {\n background: #C9E3EC;\n font-size: 13px;\n color: #1E576C;\n padding: 5px 10px;\n}\n\n.inv-status-draft {\n background: #F8EDCB;\n font-size: 13px;\n color: #6C432E;\n padding: 5px 10px;\n}\n\n.est-status-expired {\n background: #FED7D7;\n font-size: 13px;\n color: #9B2C2C;\n padding: 5px 10px;\n}\n\n.est-status-accepted {\n background: #D5EED0;\n font-size: 13px;\n color: #354930;\n padding: 5px 10px;\n}\n\n.est-status-sent {\n background: rgba(246, 208, 154, 0.4);\n font-size: 13px;\n color: #A96E1A;\n padding: 5px 10px;\n}\n\n.est-status-viewed {\n background: #C9E3EC;\n font-size: 13px;\n color: #1E576C;\n padding: 5px 10px;\n}\n\n.est-status-pending {\n background: #FED7D7;\n font-size: 13px;\n color: #9B2C2C;\n padding: 5px 10px;\n}\n\n.est-status-rejected {\n background: #E1E0EA;\n font-size: 13px;\n color: #312F57;\n padding: 5px 10px;\n}\n\n.est-status-draft {\n background: #F8EDCB;\n font-size: 13px;\n color: #6C432E;\n padding: 5px 10px;\n}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvYm9vdHN0cmFwLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19yb290LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19yZWJvb3Quc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvdmFyaWFibGVzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3ZlbmRvci9fcmZzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL192YXJpYWJsZXMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ob3Zlci5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdHlwZS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19pbWFnZXMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19pbWFnZS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2NvZGUuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2dyaWQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLWZyYW1ld29yay5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdGFibGVzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGFibGUtcm93LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19mb3Jtcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RyYW5zaXRpb24uc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19mb3Jtcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2dyYWRpZW50cy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYnV0dG9ucy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2J1dHRvbnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RyYW5zaXRpb25zLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19kcm9wZG93bi5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2NhcmV0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fbmF2LWRpdmlkZXIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2J1dHRvbi1ncm91cC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9faW5wdXQtZ3JvdXAuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2N1c3RvbS1mb3Jtcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbmF2LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19uYXZiYXIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2NhcmQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2JyZWFkY3J1bWIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3BhZ2luYXRpb24uc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19wYWdpbmF0aW9uLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19iYWRnZS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhZGdlLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19qdW1ib3Ryb24uc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2FsZXJ0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYWxlcnQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3Byb2dyZXNzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19tZWRpYS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbGlzdC1ncm91cC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3QtZ3JvdXAuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Nsb3NlLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b2FzdHMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX21vZGFsLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b29sdGlwLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fcmVzZXQtdGV4dC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcG9wb3Zlci5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2Fyb3VzZWwuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fc3Bpbm5lcnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19hbGlnbi5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhY2tncm91bmQtdmFyaWFudC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2JhY2tncm91bmQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19ib3JkZXJzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZGlzcGxheS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2VtYmVkLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZmxleC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2Zsb2F0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fb3ZlcmZsb3cuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19wb3NpdGlvbi5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NjcmVlbnJlYWRlcnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19zY3JlZW4tcmVhZGVyLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fc2hhZG93cy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NpemluZy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3N0cmV0Y2hlZC1saW5rLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fc3BhY2luZy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3RleHQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190ZXh0LXRydW5jYXRlLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1lbXBoYXNpcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtaGlkZS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3Zpc2liaWxpdHkuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3ByaW50LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvbm9kZV9tb2R1bGVzL3RvYXN0ci90b2FzdHIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3Mvc2tpbnMvc2tpbi1jcmF0ZXIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYmFzZS5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL2xheW91dC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL2NyYXRlci1zaWRlYmFyLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3BhcnRpYWxzL2hlYWRlci5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYXJ0aWFscy9zaWRlYmFyLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvYmFzZS9iYXNlLWRhdGUtcGlja2VyLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvYmFzZS9iYXNlLWJ1dHRvbi5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2Jhc2UvYmFzZS1wb3B1cC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2Jhc2UvYmFzZS10ZXh0LWFyZWEuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy9iYXNlL2Jhc2Utc3dpdGNoLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvYmFzZS9iYXNlLWxvYWRlci9pbmRleC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2Jhc2UvYmFzZS1sb2FkZXIvYW5pbWF0aW9uL19taXhpbnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy9iYXNlL2Jhc2UtcHJlZml4LWlucHV0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvdi10b29sdGlwcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2J1dHRvbnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy9mb3Jtcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2NhcmRzLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvdGFicy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2Jhc2UtdGFicy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL3RhYmxlcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2hhbWJ1cmdlcnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy90cmFuc2l0aW9ucy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2NoYXJ0cy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL3BhY2UtbG9hZGVyLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvdnVlLXRhYnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy92dWUtZHJvcGRvd24uc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy92dWUtZGF0ZS1waWNrZXIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy92dWUtbXVsdGktc2VsZWN0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvY3VzdG9tZXItc2VsZWN0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvaXRlbS1zZWxlY3Quc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy90YXgtc2VsZWN0LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvYXZhdGFyLWNyb3BwZXIuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy9wYXltZW50LW1vZGVzLW1vZGFsLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvaXRlbS11bml0LW1vZGFsLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvbWFpbC10ZXN0LW1vZGFsLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvYmFzZS1tb2RhbC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2l0ZW0tbW9kYWwuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy90ZW1wbGF0ZS1tb2RhbC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnRzL2N1c3RvbWVyLW1vZGFsLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvdGF4LXR5cGUtbW9kYWwuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50cy9jYXRlZ29yeS1tb2RhbC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9kYXNoYm9hcmQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvcGFnZXMvbG9naW4uc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvcGFnZXMvbG9naW4tMy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy80MDQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvcGFnZXMvY3VzdG9taXphdGlvbi5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9zZXR0aW5ncy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9pbnZvaWNlcy9jcmVhdGUuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvcGFnZXMvaW52b2ljZXMvdmlldy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9pbnZvaWNlcy9pbmRleC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9lc3RpbWF0ZXMvY3JlYXRlLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3BhZ2VzL2VzdGltYXRlcy9pbmRleC5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9lc3RpbWF0ZXMvdmlldy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9leHBlbnNlcy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9wYXltZW50cy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy93aXphcmQuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvcGFnZXMvcmVwb3J0cy5zY3NzIiwiZmlsZTovLy9Vc2Vycy9wdXJ2aS9Qcm9qZWN0L3dlYi9jcmF0ZXItb2xkL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdlcy9jdXN0b21lcnMuc2NzcyIsImZpbGU6Ly8vVXNlcnMvcHVydmkvUHJvamVjdC93ZWIvY3JhdGVyLW9sZC9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvcGFnZXMvcGF5bWVudC12aWV3LnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3BhZ2VzL2l0ZW1zLnNjc3MiLCJmaWxlOi8vL1VzZXJzL3B1cnZpL1Byb2plY3Qvd2ViL2NyYXRlci1vbGQvcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3BhZ2VzL3N0YXR1c2VzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQ0NBO0VBR0k7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUtGO0VBQ0E7OztBQ0FGO0FBQUE7QUFBQTtFQUdFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFNRjtFQUNFOzs7QUFVRjtFQUNFO0VBQ0EsYUNnRzhCO0VDaEIxQixXQXRDYTtFRnhDakIsYUdrUDRCO0VIalA1QixhR3NQNEI7RUhyUDVCLE9HbkNTO0VIb0NUO0VBQ0Esa0JHOUNTOzs7QUgwRFg7RUFDRTs7O0FBU0Y7RUFDRTtFQUNBO0VBQ0E7OztBQWFGO0VBQ0U7RUFDQSxlQ29GOEI7OztBRDdFaEM7RUFDRTtFQUNBLGVHdUYwQjs7O0FINUU1QjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtFQUdFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0VBSUU7OztBQUdGO0VBQ0UsYUdxSjRCOzs7QUhsSjlCO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7QUFBQTtFQUVFLGFHd0k0Qjs7O0FIckk5QjtFRXhGSTs7O0FGaUdKO0FBQUE7RUFFRTtFRW5HRTtFRnFHRjtFQUNBOzs7QUFHRjtFQUFNOzs7QUFDTjtFQUFNOzs7QUFPTjtFQUNFLE9HUndDO0VIU3hDLGlCR1J3QztFSFN4Qzs7QUloTEE7RUptTEUsT0dYc0M7RUhZdEMsaUJHWHNDOzs7QUhvQjFDO0VBQ0U7RUFDQTs7QUkvTEE7RUprTUU7RUFDQTs7O0FBU0o7QUFBQTtBQUFBO0FBQUE7RUFJRSxhRzZENEI7RURqTjFCOzs7QUZ3Sko7RUFFRTtFQUVBO0VBRUE7OztBQVFGO0VBRUU7OztBQVFGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFHRTtFQUNBOzs7QUFRRjtFQUNFOzs7QUFHRjtFQUNFLGFHb0Y0QjtFSG5GNUIsZ0JHbUY0QjtFSGxGNUIsT0duUVM7RUhvUVQ7RUFDQTs7O0FBR0Y7RUFHRTs7O0FBUUY7RUFFRTtFQUNBLGVHcUtzQzs7O0FIL0p4QztFQUVFOzs7QUFPRjtFQUNFO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFLRTtFQUNBO0VFclBFO0VGdVBGOzs7QUFHRjtBQUFBO0VBRUU7OztBQUdGO0FBQUE7RUFFRTs7O0FBTUY7RUFDRTs7O0FBT0Y7QUFBQTtBQUFBO0FBQUE7RUFJRTs7O0FBU0U7QUFBQTtBQUFBO0FBQUE7RUFDRTs7O0FBTU47QUFBQTtBQUFBO0FBQUE7RUFJRTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTs7O0FBSUY7QUFBQTtBQUFBO0FBQUE7RUFTRTs7O0FBR0Y7RUFDRTtFQUVBOzs7QUFHRjtFQU1FO0VBRUE7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUVqU0ksV0F0Q2E7RUZ5VWpCO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBSUY7QUFBQTtFQUVFOzs7QUFHRjtFQUtFO0VBQ0E7OztBQU9GO0VBQ0U7OztBQVFGO0VBQ0U7RUFDQTs7O0FBT0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFLRjtFQUNFOzs7QUsxZEY7QUFBQTtFQUVFLGVKeUs4QjtFSXZLOUIsYUZ5UzRCO0VFeFM1QixhRnlTNEI7OztBRXJTOUI7RUhnSE0sV0F0Q2E7OztBR3pFbkI7RUgrR00sV0F0Q2E7OztBR3hFbkI7RUg4R00sV0F0Q2E7OztBR3ZFbkI7RUg2R00sV0F0Q2E7OztBR3RFbkI7RUg0R00sV0F0Q2E7OztBR3JFbkI7RUgyR00sV0F0Q2E7OztBR25FbkI7RUh5R00sV0F0Q2E7RUdqRWpCLGFGMlM0Qjs7O0FFdlM5QjtFSG1HTSxXQXRDYTtFRzNEakIsYUY4UjRCO0VFN1I1QixhRnFSNEI7OztBRW5SOUI7RUg4Rk0sV0F0Q2E7RUd0RGpCLGFGMFI0QjtFRXpSNUIsYUZnUjRCOzs7QUU5UTlCO0VIeUZNLFdBdENhO0VHakRqQixhRnNSNEI7RUVyUjVCLGFGMlE0Qjs7O0FFelE5QjtFSG9GTSxXQXRDYTtFRzVDakIsYUZrUjRCO0VFalI1QixhRnNRNEI7OztBRTlQOUI7RUFDRSxZRmlGTztFRWhGUCxlRmdGTztFRS9FUDtFQUNBOzs7QUFRRjtBQUFBO0VITUk7RUdIRixhRjhONEI7OztBRTNOOUI7QUFBQTtFQUVFLFNGc1E0QjtFRXJRNUIsa0JGOFE0Qjs7O0FFdFE5QjtFQy9FRTtFQUNBOzs7QURtRkY7RUNwRkU7RUFDQTs7O0FEc0ZGO0VBQ0U7O0FBRUE7RUFDRSxjRndQMEI7OztBRTlPOUI7RUhqQ0k7RUdtQ0Y7OztBQUlGO0VBQ0UsZUZ3Qk87RURUSCxXQXRDYTs7O0FHMkJuQjtFQUNFO0VIN0NFO0VHK0NGLE9GMUdTOztBRTRHVDtFQUNFOzs7QUVuSEo7RUNJRTtFQUdBOzs7QURERjtFQUNFLFNKaWdDa0M7RUloZ0NsQyxrQkpSUztFSVNUO0VFWEUsZU42TzBCO0VLdk81QjtFQUdBOzs7QURjRjtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VMa0NJO0VLaENGLE9KM0JTOzs7QU9aWDtFUnVFSTtFUXJFRixPVEswQjtFU0oxQjs7QUFHQTtFQUNFOzs7QUFLSjtFQUNFO0VSMERFO0VReERGLE9QVFM7RU9VVCxrQlBEUztFTVhQLGVOK08wQjs7QU8vTjVCO0VBQ0U7RVJrREE7RVFoREEsYVA0UTBCOzs7QU90UTlCO0VBQ0U7RVJ5Q0U7RVF2Q0YsT1BqQlM7O0FPb0JUO0VSb0NFO0VRbENBO0VBQ0E7OztBQUtKO0VBQ0UsWVA0akNrQztFTzNqQ2xDOzs7QUN4Q0E7RUNEQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQ21ERTtFRnRERjtJQ1dJLFdUb01pQjs7O0FVekpuQjtFRnRERjtJQ1dJLFdUb01pQjs7O0FVekpuQjtFRnRERjtJQ1dJLFdUb01pQjs7O0FVekpuQjtFRnRERjtJQ1dJLFdUb01pQjs7OztBUXpNckI7RUNQQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUNtREU7RUZyQ0U7SUFDRSxXUjZMZTs7O0FVekpuQjtFRnJDRTtJQUNFLFdSNkxlOzs7QVV6Sm5CO0VGckNFO0lBQ0UsV1I2TGU7OztBVXpKbkI7RUZyQ0U7SUFDRSxXUjZMZTs7O0FRektyQjtFQ3JCQTtFQUNBO0VBQ0E7RUFDQTs7O0FEd0JBO0VBQ0U7RUFDQTs7QUFFQTtBQUFBO0VBRUU7RUFDQTs7O0FHbERKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFtQkU7RUFDRTtFQUNBO0VBQ0E7OztBRitCTjtFQUNFO0VBQ0E7OztBQUZGO0VBQ0U7RUFDQTs7O0FBRkY7RUFDRTtFQUNBOzs7QUFGRjtFQUNFO0VBQ0E7OztBQUZGO0VBQ0U7RUFDQTs7O0FBRkY7RUFDRTtFQUNBOzs7QUV4QkU7RUZNSjtFQUNBO0VBQ0E7OztBRUhNO0VGUE47RUFJQTs7O0FFR007RUZQTjtFQUlBOzs7QUVHTTtFRlBOO0VBSUE7OztBRUdNO0VGUE47RUFJQTs7O0FFR007RUZQTjtFQUlBOzs7QUVHTTtFRlBOO0VBSUE7OztBRUdNO0VGUE47RUFJQTs7O0FFR007RUZQTjtFQUlBOzs7QUVHTTtFRlBOO0VBSUE7OztBRUdNO0VGUE47RUFJQTs7O0FFR007RUZQTjtFQUlBOzs7QUVHTTtFRlBOO0VBSUE7OztBRVFJO0VBQXdCOzs7QUFFeEI7RUFBdUI7OztBQUdyQjtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFDWDtFQUF3QixPQURiOzs7QUFPVDtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUVRUTtFRlJSOzs7QUNLRTtFQzlCRTtJQUNFO0lBQ0E7SUFDQTs7O0VGK0JOO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFQUZGO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFRXhCRTtJRk1KO0lBQ0E7SUFDQTs7O0VFSE07SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFUUk7SUFBd0I7OztFQUV4QjtJQUF1Qjs7O0VBR3JCO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQU9UO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztBQ0tFO0VDOUJFO0lBQ0U7SUFDQTtJQUNBOzs7RUYrQk47SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFQUZGO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFQUZGO0lBQ0U7SUFDQTs7O0VFeEJFO0lGTUo7SUFDQTtJQUNBOzs7RUVITTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVRSTtJQUF3Qjs7O0VBRXhCO0lBQXVCOzs7RUFHckI7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBQ1g7SUFBd0IsT0FEYjs7O0VBT1Q7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0VFUVE7SUZSUjs7O0FDS0U7RUM5QkU7SUFDRTtJQUNBO0lBQ0E7OztFRitCTjtJQUNFO0lBQ0E7OztFQUZGO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFQUZGO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUV4QkU7SUZNSjtJQUNBO0lBQ0E7OztFRUhNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRVFJO0lBQXdCOzs7RUFFeEI7SUFBdUI7OztFQUdyQjtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFDWDtJQUF3QixPQURiOzs7RUFPVDtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7RUVRUTtJRlJSOzs7QUNLRTtFQzlCRTtJQUNFO0lBQ0E7SUFDQTs7O0VGK0JOO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFQUZGO0lBQ0U7SUFDQTs7O0VBRkY7SUFDRTtJQUNBOzs7RUFGRjtJQUNFO0lBQ0E7OztFRXhCRTtJRk1KO0lBQ0E7SUFDQTs7O0VFSE07SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFR007SUZQTjtJQUlBOzs7RUVHTTtJRlBOO0lBSUE7OztFRUdNO0lGUE47SUFJQTs7O0VFUUk7SUFBd0I7OztFQUV4QjtJQUF1Qjs7O0VBR3JCO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQUNYO0lBQXdCLE9BRGI7OztFQU9UO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztFRVFRO0lGUlI7OztBR25ERjtFQUNFO0VBQ0EsZVprSU87RVlqSVAsT1pTUzs7QVlOVDtBQUFBO0VBRUUsU1pzVjBCO0VZclYxQjtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOzs7QUFVRjtBQUFBO0VBRUUsU1pnVTBCOzs7QVl2VDlCO0VBQ0U7O0FBRUE7QUFBQTtFQUVFOztBQUlBO0FBQUE7RUFFRTs7O0FBTUo7QUFBQTtBQUFBO0FBQUE7RUFJRTs7O0FBU0Y7RUFDRSxrQlo0UjBCOzs7QUMzVjVCO0VXMkVJLE9adkVLO0VZd0VMLGtCWmlSd0I7OztBYW5XMUI7QUFBQTtBQUFBO0VBR0Usa0JEMkYrQjs7QUN2Ri9CO0FBQUE7QUFBQTtBQUFBO0VBSUUsY0RtRnlFOzs7QVh4Ri9FO0VZaUJNLGtCQUplOztBQU1mO0FBQUE7RUFFRSxrQkFSYTs7O0FBbkJuQjtBQUFBO0FBQUE7RUFHRSxrQkQyRitCOztBQ3ZGL0I7QUFBQTtBQUFBO0FBQUE7RUFJRSxjRG1GeUU7OztBWHhGL0U7RVlpQk0sa0JBSmU7O0FBTWY7QUFBQTtFQUVFLGtCQVJhOzs7QUFuQm5CO0FBQUE7QUFBQTtFQUdFLGtCRDJGK0I7O0FDdkYvQjtBQUFBO0FBQUE7QUFBQTtFQUlFLGNEbUZ5RTs7O0FYeEYvRTtFWWlCTSxrQkFKZTs7QUFNZjtBQUFBO0VBRUUsa0JBUmE7OztBQW5CbkI7QUFBQTtBQUFBO0VBR0Usa0JEMkYrQjs7QUN2Ri9CO0FBQUE7QUFBQTtBQUFBO0VBSUUsY0RtRnlFOzs7QVh4Ri9FO0VZaUJNLGtCQUplOztBQU1mO0FBQUE7RUFFRSxrQkFSYTs7O0FBbkJuQjtBQUFBO0FBQUE7RUFHRSxrQkQyRitCOztBQ3ZGL0I7QUFBQTtBQUFBO0FBQUE7RUFJRSxjRG1GeUU7OztBWHhGL0U7RVlpQk0sa0JBSmU7O0FBTWY7QUFBQTtFQUVFLGtCQVJhOzs7QUFuQm5CO0FBQUE7QUFBQTtFQUdFLGtCRDJGK0I7O0FDdkYvQjtBQUFBO0FBQUE7QUFBQTtFQUlFLGNEbUZ5RTs7O0FYeEYvRTtFWWlCTSxrQkFKZTs7QUFNZjtBQUFBO0VBRUUsa0JBUmE7OztBQW5CbkI7QUFBQTtBQUFBO0VBR0Usa0JEMkYrQjs7QUN2Ri9CO0FBQUE7QUFBQTtBQUFBO0VBSUUsY0RtRnlFOzs7QVh4Ri9FO0VZaUJNLGtCQUplOztBQU1mO0FBQUE7RUFFRSxrQkFSYTs7O0FBbkJuQjtBQUFBO0FBQUE7RUFHRSxrQkQyRitCOztBQ3ZGL0I7QUFBQTtBQUFBO0FBQUE7RUFJRSxjRG1GeUU7OztBWHhGL0U7RVlpQk0sa0JBSmU7O0FBTWY7QUFBQTtFQUVFLGtCQVJhOzs7QUFuQm5CO0FBQUE7QUFBQTtFQUdFLGtCYmdXd0I7OztBQzdWNUI7RVlpQk0sa0JBSmU7O0FBTWY7QUFBQTtFQUVFLGtCQVJhOzs7QUR3Rm5CO0VBQ0UsT1ozR0s7RVk0R0wsa0JacEdLO0VZcUdMLGNabVF3Qjs7QVk5UDFCO0VBQ0UsT1o1R0s7RVk2R0wsa0JabEhLO0VZbUhMLGNabEhLOzs7QVl1SFg7RUFDRSxPWjNIUztFWTRIVCxrQlpwSFM7O0FZc0hUO0FBQUE7QUFBQTtFQUdFLGNaK08wQjs7QVk1TzVCO0VBQ0U7O0FBSUE7RUFDRSxrQlptT3dCOztBQ3hXNUI7RVc0SU0sT1pqSkc7RVlrSkgsa0JaNk5zQjs7O0FVN1MxQjtFRWlHQTtJQUVJO0lBQ0E7SUFDQTtJQUNBOztFQUdBO0lBQ0U7OztBRjFHTjtFRWlHQTtJQUVJO0lBQ0E7SUFDQTtJQUNBOztFQUdBO0lBQ0U7OztBRjFHTjtFRWlHQTtJQUVJO0lBQ0E7SUFDQTtJQUNBOztFQUdBO0lBQ0U7OztBRjFHTjtFRWlHQTtJQUVJO0lBQ0E7SUFDQTtJQUNBOztFQUdBO0lBQ0U7OztBQVROO0VBRUk7RUFDQTtFQUNBO0VBQ0E7O0FBR0E7RUFDRTs7O0FFN0tWO0VBQ0U7RUFDQTtFQUNBLFFkNmVzQztFYzVldEM7RWZxSEksV0F0Q2E7RWU1RWpCLGFkc1I0QjtFY3JSNUIsYWQwUjRCO0VjelI1QixPZERTO0VjRVQsa0JkVFM7RWNVVDtFQUNBO0VSYkUsZU42TzBCO0VlNU94QixZRGtCSjs7QUNiRTtFRExKO0lDTU07OztBRGVKO0VBQ0U7RUFDQTs7QUFJRjtFQUNFO0VBQ0E7O0FFdEJGO0VBQ0U7RUFDQSxrQmhCUk87RWdCU1AsY2hCd2RvQztFZ0J2ZHBDO0VBS0UsWWhCdVh3Qjs7QWNuVzVCO0VBQ0UsT2Q5Qk87RWNnQ1A7O0FBUUY7RUFFRSxrQmQ5Q087RWNnRFA7OztBQUtGO0VBTUUsT2R0RE87RWN1RFAsa0JkOURPOzs7QWNtRVg7QUFBQTtFQUVFO0VBQ0E7OztBQVVGO0VBQ0U7RUFDQTtFQUNBO0VmbEJFO0Vlb0JGLGFkNE00Qjs7O0Fjek05QjtFQUNFO0VBQ0E7RWY4QkksV0F0Q2E7RWVVakIsYWR5STRCOzs7QWN0STlCO0VBQ0U7RUFDQTtFZnVCSSxXQXRDYTtFZWlCakIsYWRtSTRCOzs7QWMxSDlCO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RWZRSSxXQXRDYTtFZWdDakIsYWQrSzRCO0VjOUs1QixPZDFHUztFYzJHVDtFQUNBO0VBQ0E7O0FBRUE7RUFFRTtFQUNBOzs7QUFZSjtFQUNFLFFkd1dzQztFY3ZXdEM7RWZqQkksV0F0Q2E7RWV5RGpCLGFkMkY0QjtFTXhPMUIsZU4rTzBCOzs7QWM5RjlCO0VBQ0UsUWRpV3NDO0VjaFd0QztFZnpCSSxXQXRDYTtFZWlFakIsYWRrRjRCO0VNdk8xQixlTjhPMEI7OztBY25GNUI7RUFFRTs7O0FBSUo7RUFDRTs7O0FBUUY7RUFDRSxlZHNWc0M7OztBY25WeEM7RUFDRTtFQUNBLFlkdVVzQzs7O0FjL1R4QztFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFFRTtFQUNBOzs7QUFTSjtFQUNFO0VBQ0E7RUFDQSxjZDRTc0M7OztBY3pTeEM7RUFDRTtFQUNBLFlkd1NzQztFY3ZTdEM7O0FBR0E7RUFFRSxPZGhOTzs7O0Fjb05YO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsY2R5UnNDOztBY3RSdEM7RUFDRTtFQUNBO0VBQ0EsY2RvUm9DO0VjblJwQzs7O0FFcE1GO0VBQ0U7RUFDQTtFQUNBLFloQjZjb0M7RURwYnBDO0VpQnZCQSxPRjRNcUM7OztBRXpNdkM7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFakJvRUUsV0F0Q2E7RWlCNUJmLGFoQjJPMEI7RWdCMU8xQjtFQUNBO0VWMURBLGVONk8wQjs7O0FnQjlLMUI7QUFBQTtBQUFBO0FBQUE7RUFFRTs7O0FBdENGO0VBNENFLGNGaUxtQztFRTlLakMsZWhCbWFnQztFZ0JsYWhDO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0UsY0ZzS2lDO0VFcktqQzs7O0FBeERKO0VBaUVJLGVoQmlaZ0M7RWdCaFpoQzs7O0FBbEVKO0VBeUVFLGNGb0ptQztFRWpKakMsZWhCa2VvQztFZ0JqZXBDOztBQUdGO0VBQ0UsY0Y0SWlDO0VFM0lqQzs7O0FBT0Y7RUFDRSxPRm1JaUM7O0FFaEluQztBQUFBO0FBQUE7RUFFRTs7O0FBT0Y7RUFDRSxPRnNIaUM7O0FFcEhqQztFQUNFLGNGbUgrQjs7QUU5R2pDO0VBQ0U7RUMxSU4sa0JEMkkyQjs7QUFLdkI7RUFDRTs7QUFHRjtFQUNFLGNGa0crQjs7O0FFekZuQztFQUNFLGNGd0ZpQzs7QUVwRmpDO0VBQ0UsY0ZtRitCO0VFbEYvQjs7O0FBL0hSO0VBQ0U7RUFDQTtFQUNBLFloQjZjb0M7RURwYnBDO0VpQnZCQSxPRjRNcUM7OztBRXpNdkM7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFakJvRUUsV0F0Q2E7RWlCNUJmLGFoQjJPMEI7RWdCMU8xQjtFQUNBO0VWMURBLGVONk8wQjs7O0FnQjlLMUI7QUFBQTtBQUFBO0FBQUE7RUFFRTs7O0FBdENGO0VBNENFLGNGaUxtQztFRTlLakMsZWhCbWFnQztFZ0JsYWhDO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0UsY0ZzS2lDO0VFcktqQzs7O0FBeERKO0VBaUVJLGVoQmlaZ0M7RWdCaFpoQzs7O0FBbEVKO0VBeUVFLGNGb0ptQztFRWpKakMsZWhCa2VvQztFZ0JqZXBDOztBQUdGO0VBQ0UsY0Y0SWlDO0VFM0lqQzs7O0FBT0Y7RUFDRSxPRm1JaUM7O0FFaEluQztBQUFBO0FBQUE7RUFFRTs7O0FBT0Y7RUFDRSxPRnNIaUM7O0FFcEhqQztFQUNFLGNGbUgrQjs7QUU5R2pDO0VBQ0U7RUMxSU4sa0JEMkkyQjs7QUFLdkI7RUFDRTs7QUFHRjtFQUNFLGNGa0crQjs7O0FFekZuQztFQUNFLGNGd0ZpQzs7QUVwRmpDO0VBQ0UsY0ZtRitCO0VFbEYvQjs7O0FGOEZWO0VBQ0U7RUFDQTtFQUNBOztBQUtBO0VBQ0U7O0FKdE5BO0VJMk5BO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7O0VBSUY7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztFQUlGO0lBQ0U7SUFDQTtJQUNBOztFQUlGO0lBQ0U7O0VBR0Y7QUFBQTtJQUVFOztFQUtGO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFRjtJQUNFO0lBQ0E7SUFDQTtJQUNBLGNkMkxrQztJYzFMbEM7O0VBR0Y7SUFDRTtJQUNBOztFQUVGO0lBQ0U7Ozs7QUl4VU47RUFDRTtFQUVBLGFsQjBSNEI7RWtCelI1QixPbEJNUztFa0JMVDtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUN1RkE7RXBCdUJJLFdBdENhO0VvQmlCakIsYW5COEw0QjtFTW5TMUIsZU42TzBCO0VlNU94QixZR2FKOztBSFJFO0VHTEo7SUhNTTs7O0FkQUo7RWlCVUUsT2xCTk87RWtCT1A7O0FBR0Y7RUFFRTtFQUNBLFlsQmdYMEI7O0FrQjVXNUI7RUFFRSxTbEJvWjBCOztBa0JyWTlCO0FBQUE7RUFFRTs7O0FBU0E7RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FESU47RUN2REE7RUZBRSxrQmpCeUVXO0VtQnZFYixjbkJ1RWE7O0FDbkViO0VrQkFFO0VGTkEsa0JFRDJEO0VBUzNELGNBVHFHOztBQVl2RztFQUVFO0VGYkEsa0JFRDJEO0VBZ0IzRCxjQWhCcUc7RUFxQm5HOztBQUtKO0VBRUU7RUFDQSxrQm5CNkNXO0VtQjVDWCxjbkI0Q1c7O0FtQnJDYjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0FEVU47RUNIQSxPbkJlYTtFbUJkYixjbkJjYTs7QUNuRWI7RWtCd0RFLE9BTGdEO0VBTWhELGtCbkJVVztFbUJUWCxjbkJTVzs7QW1CTmI7RUFFRTs7QUFHRjtFQUVFLE9uQkRXO0VtQkVYOztBQUdGO0VBR0U7RUFDQSxrQm5CVFc7RW1CVVgsY25CVlc7O0FtQllYO0VBS0k7OztBRDdCTjtFQ0hBLE9uQmVhO0VtQmRiLGNuQmNhOztBQ25FYjtFa0J3REUsT0FMZ0Q7RUFNaEQsa0JuQlVXO0VtQlRYLGNuQlNXOztBbUJOYjtFQUVFOztBQUdGO0VBRUUsT25CRFc7RW1CRVg7O0FBR0Y7RUFHRTtFQUNBLGtCbkJUVztFbUJVWCxjbkJWVzs7QW1CWVg7RUFLSTs7O0FEN0JOO0VDSEEsT25CZWE7RW1CZGIsY25CY2E7O0FDbkViO0VrQndERSxPQUxnRDtFQU1oRCxrQm5CVVc7RW1CVFgsY25CU1c7O0FtQk5iO0VBRUU7O0FBR0Y7RUFFRSxPbkJEVztFbUJFWDs7QUFHRjtFQUdFO0VBQ0Esa0JuQlRXO0VtQlVYLGNuQlZXOztBbUJZWDtFQUtJOzs7QUQ3Qk47RUNIQSxPbkJlYTtFbUJkYixjbkJjYTs7QUNuRWI7RWtCd0RFLE9BTGdEO0VBTWhELGtCbkJVVztFbUJUWCxjbkJTVzs7QW1CTmI7RUFFRTs7QUFHRjtFQUVFLE9uQkRXO0VtQkVYOztBQUdGO0VBR0U7RUFDQSxrQm5CVFc7RW1CVVgsY25CVlc7O0FtQllYO0VBS0k7OztBRDdCTjtFQ0hBLE9uQmVhO0VtQmRiLGNuQmNhOztBQ25FYjtFa0J3REUsT0FMZ0Q7RUFNaEQsa0JuQlVXO0VtQlRYLGNuQlNXOztBbUJOYjtFQUVFOztBQUdGO0VBRUUsT25CRFc7RW1CRVg7O0FBR0Y7RUFHRTtFQUNBLGtCbkJUVztFbUJVWCxjbkJWVzs7QW1CWVg7RUFLSTs7O0FEN0JOO0VDSEEsT25CZWE7RW1CZGIsY25CY2E7O0FDbkViO0VrQndERSxPQUxnRDtFQU1oRCxrQm5CVVc7RW1CVFgsY25CU1c7O0FtQk5iO0VBRUU7O0FBR0Y7RUFFRSxPbkJEVztFbUJFWDs7QUFHRjtFQUdFO0VBQ0Esa0JuQlRXO0VtQlVYLGNuQlZXOztBbUJZWDtFQUtJOzs7QUQ3Qk47RUNIQSxPbkJlYTtFbUJkYixjbkJjYTs7QUNuRWI7RWtCd0RFLE9BTGdEO0VBTWhELGtCbkJVVztFbUJUWCxjbkJTVzs7QW1CTmI7RUFFRTs7QUFHRjtFQUVFLE9uQkRXO0VtQkVYOztBQUdGO0VBR0U7RUFDQSxrQm5CVFc7RW1CVVgsY25CVlc7O0FtQllYO0VBS0k7OztBRDdCTjtFQ0hBLE9uQmVhO0VtQmRiLGNuQmNhOztBQ25FYjtFa0J3REUsT0FMZ0Q7RUFNaEQsa0JuQlVXO0VtQlRYLGNuQlNXOztBbUJOYjtFQUVFOztBQUdGO0VBRUUsT25CRFc7RW1CRVg7O0FBR0Y7RUFHRTtFQUNBLGtCbkJUVztFbUJVWCxjbkJWVzs7QW1CWVg7RUFLSTs7O0FEbEJSO0VBQ0UsYWxCb040QjtFa0JuTjVCLE9sQmtHd0M7RWtCakd4QyxpQmxCa0d3Qzs7QUN2S3hDO0VpQndFRSxPbEJnR3NDO0VrQi9GdEMsaUJsQmdHc0M7O0FrQjdGeEM7RUFFRSxpQmxCMkZzQztFa0IxRnRDOztBQUdGO0VBRUUsT2xCbkZPO0VrQm9GUDs7O0FBV0o7RUNKRTtFcEJ1QkksV0F0Q2E7RW9CaUJqQixhbkJrSTRCO0VNdk8xQixlTjhPMEI7OztBa0JuSTlCO0VDUkU7RXBCdUJJLFdBdENhO0VvQmlCakIsYW5CbUk0QjtFTXhPMUIsZU4rTzBCOzs7QWtCM0g5QjtFQUNFO0VBQ0E7O0FBR0E7RUFDRSxZbEI2VDBCOzs7QWtCclQ1QjtBQUFBO0FBQUE7RUFDRTs7O0FFeElKO0VMTU0sWUtMSjs7QUxVRTtFS1hKO0lMWU07OztBS1RKO0VBQ0U7OztBQUtGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VMWEksWUtZSjs7QUxQRTtFS0dKO0lMRk07Ozs7QU1YTjtBQUFBO0FBQUE7QUFBQTtFQUlFOzs7QUFHRjtFQUNFOztBQ29CRTtFQUNFO0VBQ0EsYXRCa093QjtFc0JqT3hCLGdCdEJnT3dCO0VzQi9OeEI7RUFoQ0o7RUFDQTtFQUNBO0VBQ0E7O0FBcURFO0VBQ0U7OztBRDFDTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFNyQjRwQmtDO0VxQjNwQmxDO0VBQ0E7RUFDQSxXckJrdUJrQztFcUJqdUJsQztFQUNBO0V0QnNHSSxXQXRDYTtFc0I5RGpCLE9yQlhTO0VxQllUO0VBQ0E7RUFDQSxrQnZCVjBCO0V1QlcxQjtFQUNBO0VmM0JFLGVONk8wQjs7O0FxQnpNMUI7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBWFlGO0VXbkJBO0lBQ0U7SUFDQTs7O0VBR0Y7SUFDRTtJQUNBOzs7QVhZRjtFV25CQTtJQUNFO0lBQ0E7OztFQUdGO0lBQ0U7SUFDQTs7O0FYWUY7RVduQkE7SUFDRTtJQUNBOzs7RUFHRjtJQUNFO0lBQ0E7OztBWFlGO0VXbkJBO0lBQ0U7SUFDQTs7O0VBR0Y7SUFDRTtJQUNBOzs7QUFRSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVyQityQmdDOztBc0I5dEJoQztFQUNFO0VBQ0EsYXRCa093QjtFc0JqT3hCLGdCdEJnT3dCO0VzQi9OeEI7RUF6Qko7RUFDQTtFQUNBO0VBQ0E7O0FBOENFO0VBQ0U7OztBRFdKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxhckJpckJnQzs7QXNCOXRCaEM7RUFDRTtFQUNBLGF0QmtPd0I7RXNCak94QixnQnRCZ093QjtFc0IvTnhCO0VBbEJKO0VBQ0E7RUFDQTtFQUNBOztBQXVDRTtFQUNFOztBRHFCRjtFQUNFOzs7QUFNSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsY3JCZ3FCZ0M7O0FzQjl0QmhDO0VBQ0U7RUFDQSxhdEJrT3dCO0VzQmpPeEIsZ0J0QmdPd0I7RXNCL054Qjs7QUFXQTtFQUNFOztBQUdGO0VBQ0U7RUFDQSxjdEIrTXNCO0VzQjlNdEIsZ0J0QjZNc0I7RXNCNU10QjtFQTlCTjtFQUNBO0VBQ0E7O0FBaUNFO0VBQ0U7O0FEc0NGO0VBQ0U7OztBQVFKO0VBSUU7RUFDQTs7O0FBS0o7RUU5R0U7RUFDQTtFQUNBO0VBQ0E7OztBRmtIRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYXJCb0s0QjtFcUJuSzVCLE92QjFETTtFdUIyRE47RUFDQTtFQUNBO0VBQ0E7O0FwQnBIQTtFb0JtSUUsT3JCcW5CZ0M7RXFCcG5CaEM7RUo5SUEsa0JqQkVPOztBcUJnSlQ7RUFFRSxPckJuSk87RXFCb0pQO0VKckpBLGtCakJ1UDBCOztBcUI5RjVCO0VBRUUsT3JCcEpPO0VxQnFKUDtFQUNBOzs7QUFRSjtFQUNFOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQTtFdEJwREksV0F0Q2E7RXNCNEZqQixPdkI3SzBCO0V1QjhLMUI7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLE92QnZITTs7O0EwQm5FUjtBQUFBO0VBRUU7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDRTtFQUNBOztBdkJDRjtBQUFBO0V1QklJOztBQUVGO0FBQUE7QUFBQTtBQUFBO0VBR0U7OztBQU1OO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQU1GO0FBQUE7RUFFRTs7QUFJRjtBQUFBO0VsQnhCRSx5QmtCMEI2QjtFbEJ6QjdCLDRCa0J5QjZCOztBQUcvQjtBQUFBO0VsQmZFLHdCa0JpQjRCO0VsQmhCNUIsMkJrQmdCNEI7OztBQWdCaEM7RUFDRTtFQUNBOztBQUVBO0VBR0U7O0FBR0Y7RUFDRTs7O0FBSUo7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQW9CRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtBQUFBO0VBRUU7O0FBR0Y7QUFBQTtFQUVFOztBQUlGO0FBQUE7RWxCbEdFLDRCa0JvRzhCO0VsQm5HOUIsMkJrQm1HOEI7O0FBR2hDO0FBQUE7RWxCckhFLHdCa0J1SDJCO0VsQnRIM0IseUJrQnNIMkI7OztBQWtCN0I7QUFBQTtFQUVFOztBQUVBO0FBQUE7QUFBQTtBQUFBO0VBRUU7RUFDQTtFQUNBOzs7QUN6Sk47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0VBSUU7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0VBR0U7O0FBS0o7QUFBQTtBQUFBO0VBR0U7O0FBSUY7RUFDRTs7QUFLQTtBQUFBO0VuQnRCQSx5Qm1Cc0JrRDtFbkJyQmxELDRCbUJxQmtEOztBQUNsRDtBQUFBO0VuQlRBLHdCbUJTa0Q7RW5CUmxELDJCbUJRa0Q7O0FBS3BEO0VBQ0U7RUFDQTs7QUFFQTtFbkJoQ0EseUJtQmlDNEU7RW5CaEM1RSw0Qm1CZ0M0RTs7QUFDNUU7RW5CcEJBLHdCbUJvQnFFO0VuQm5CckUsMkJtQm1CcUU7OztBQVd6RTtBQUFBO0VBRUU7O0FBS0E7QUFBQTtFQUNFO0VBQ0E7O0FBRUE7QUFBQTtFQUNFOztBQUlKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFJRTs7O0FBSUo7RUFBdUI7OztBQUN2QjtFQUFzQjs7O0FBUXRCO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RTFCd0JJLFdBdENhO0UwQmdCakIsYXpCMEw0QjtFeUJ6TDVCLGF6QjhMNEI7RXlCN0w1QixPekI3RlM7RXlCOEZUO0VBQ0E7RUFDQSxrQnpCckdTO0V5QnNHVDtFbkIxR0UsZU42TzBCOztBeUIvSDVCO0FBQUE7RUFFRTs7O0FBVUo7QUFBQTtFQUVFLFF6QnVYc0M7OztBeUJwWHhDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQU1FO0UxQlhJLFdBdENhO0UwQm1EakIsYXpCZ0c0QjtFTXZPMUIsZU44TzBCOzs7QXlCbkc5QjtBQUFBO0VBRUUsUXpCcVdzQzs7O0F5QmxXeEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0VBTUU7RTFCNUJJLFdBdENhO0UwQm9FakIsYXpCZ0Y0QjtFTXhPMUIsZU4rTzBCOzs7QXlCbkY5QjtBQUFBO0VBRUU7OztBQVdGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFbkJ6SkkseUJtQitKMkI7RW5COUozQiw0Qm1COEoyQjs7O0FBRy9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFbkJwSkksd0JtQjBKMEI7RW5CekoxQiwyQm1CeUowQjs7O0FDcEw5QjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsYzFCNmZzQzs7O0EwQjFmeEM7RUFDRTtFQUNBO0VBQ0E7RUFDQSxPMUJ5ZnNDO0UwQnhmdEM7RUFDQTs7QUFFQTtFQUNFLE8xQnZCTztFMEJ3QlAsYzFCOE4wQjtFaUJ2UDFCLGtCakJ1UDBCOztBMEJ6TjVCO0VBS0ksWTFCb1d3Qjs7QTBCaFc1QjtFQUNFLGMxQjBib0M7O0EwQnZidEM7RUFDRSxPMUIzQ087RTBCNENQLGtCMUJzZjRDO0UwQnJmNUMsYzFCcWY0Qzs7QTBCOWU1QztFQUNFLE8xQi9DSzs7QTBCaURMO0VBQ0Usa0IxQnRERzs7O0EwQmdFWDtFQUNFO0VBQ0E7RUFFQTs7QUFJQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzFCNGJvQztFMEIzYnBDLFExQjJib0M7RTBCMWJwQztFQUNBO0VBQ0Esa0IxQm5GTztFMEJvRlA7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE8xQjZhb0M7RTBCNWFwQyxRMUI0YW9DO0UwQjNhcEM7RUFDQTs7O0FBVUY7RXBCN0dFLGVONk8wQjs7QTBCM0gxQjtFQUNFOztBQUtGO0VBQ0UsYzFCK0h3QjtFaUJ2UDFCLGtCakJ1UDBCOztBMEIzSDFCO0VBQ0U7O0FBS0Y7RUFDRSxrQjFCd1owQzs7QTBCdFo1QztFQUNFLGtCMUJxWjBDOzs7QTBCM1k5QztFQUVFLGUxQjhaNEM7O0EwQjFaNUM7RUFDRTs7QUFLRjtFQUNFLGtCMUI4WDBDOzs7QTBCcFhoRDtFQUNFOztBQUdFO0VBQ0U7RUFDQSxPMUJzWTBDO0UwQnJZMUM7RUFFQSxlMUJvWTBDOztBMEJqWTVDO0VBQ0U7RUFDQTtFQUNBLE8xQitYMEM7RTBCOVgxQyxRMUI4WDBDO0UwQjdYMUMsa0IxQmxMSztFMEJvTEwsZTFCMFgwQztFZXBqQjFDLFlXMkxBOztBWHRMRjtFVzhLQTtJWDdLRTs7O0FXMExGO0VBQ0Usa0IxQmhNSztFMEJpTUw7O0FBS0Y7RUFDRSxrQjFCbVYwQzs7O0EwQnZVaEQ7RUFDRTtFQUNBO0VBQ0EsUTFCeVJzQztFMEJ4UnRDO0UzQi9GSSxXQXRDYTtFMkJ3SWpCLGExQmtFNEI7RTBCakU1QixhMUJzRTRCO0UwQnJFNUIsTzFCck5TO0UwQnNOVDtFQUNBO0VBQ0E7RXBCak9FLGVONk8wQjtFMEJUNUI7O0FBRUE7RUFDRSxjMUI0UG9DO0UwQjNQcEM7RUFJRSxZMUJ3VzhCOztBMEJyV2hDO0VBTUUsTzFCNU9LO0UwQjZPTCxrQjFCcFBLOztBMEJ3UFQ7RUFFRTtFQUNBLGUxQm9JMEI7RTBCbkkxQjs7QUFHRjtFQUNFLE8xQjFQTztFMEIyUFAsa0IxQi9QTzs7QTBCbVFUO0VBQ0U7O0FBSUY7RUFDRTtFQUNBOzs7QUFJSjtFQUNFLFExQitOc0M7RTBCOU50QyxhMUJzSDRCO0UwQnJINUIsZ0IxQnFINEI7RTBCcEg1QixjMUJxSDRCO0VEalJ4QixXQXRDYTs7O0EyQnNNbkI7RUFDRSxRMUJ3TnNDO0UwQnZOdEMsYTFCbUg0QjtFMEJsSDVCLGdCMUJrSDRCO0UwQmpINUIsYzFCa0g0QjtFRHRSeEIsV0F0Q2E7OztBMkJtTm5CO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsUTFCc01zQztFMEJyTXRDOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFExQjhMc0M7RTBCN0x0QztFQUNBOztBQUVBO0VBQ0UsYzFCMktvQztFMEIxS3BDLFkxQitFMEI7O0EwQjNFNUI7RUFFRSxrQjFCM1RPOztBMEIrVFA7RUFDRSxTMUJpVWE7O0EwQjdUakI7RUFDRTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsUTFCOEpzQztFMEI3SnRDO0VBRUEsYTFCeEQ0QjtFMEJ5RDVCLGExQnBENEI7RTBCcUQ1QixPMUIvVVM7RTBCZ1ZULGtCMUJ2VlM7RTBCd1ZUO0VwQjFWRSxlTjZPMEI7O0EwQmlINUI7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxRMUJ3SW9DO0UwQnZJcEM7RUFDQSxhMUJwRTBCO0UwQnFFMUIsTzFCL1ZPO0UwQmdXUDtFVHhXQSxrQmpCR087RTBCdVdQO0VwQjNXQSxlb0I0V3VCOzs7QUFVM0I7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBSUE7RUFBMEIsWTFCMk9lOztBMEIxT3pDO0VBQTBCLFkxQjBPZTs7QTBCek96QztFQUEwQixZMUJ5T2U7O0EwQnRPM0M7RUFDRTs7QUFHRjtFQUNFLE8xQjJOeUM7RTBCMU56QyxRMUIwTnlDO0UwQnpOekM7RVQ3WUEsa0JqQnVQMEI7RTBCd0oxQixRMUIwTnlDO0VNMW1CekMsZU4ybUJ5QztFZTFtQnZDLFlXa1pGO0VBQ0E7O0FYOVlBO0VXcVlGO0lYcFlJOzs7QVcrWUY7RVRyWkEsa0JqQjhtQnlDOztBMEJwTjNDO0VBQ0UsTzFCb01nQztFMEJuTWhDLFExQm9NZ0M7RTBCbk1oQztFQUNBLFExQm1NZ0M7RTBCbE1oQyxrQjFCM1pPO0UwQjRaUDtFcEJqYUEsZU5vbUJnQzs7QTBCOUxsQztFQUNFLE8xQmdNeUM7RTBCL0x6QyxRMUIrTHlDO0VpQnRtQnpDLGtCakJ1UDBCO0UwQmtMMUIsUTFCZ015QztFTTFtQnpDLGVOMm1CeUM7RWUxbUJ2QyxZVzRhRjtFQUNBOztBWHhhQTtFV2dhRjtJWC9aSTs7O0FXeWFGO0VUL2FBLGtCakI4bUJ5Qzs7QTBCMUwzQztFQUNFLE8xQjBLZ0M7RTBCektoQyxRMUIwS2dDO0UwQnpLaEM7RUFDQSxRMUJ5S2dDO0UwQnhLaEMsa0IxQnJiTztFMEJzYlA7RXBCM2JBLGVOb21CZ0M7O0EwQnBLbEM7RUFDRSxPMUJzS3lDO0UwQnJLekMsUTFCcUt5QztFMEJwS3pDO0VBQ0EsYzFCOUQwQjtFMEIrRDFCLGExQi9EMEI7RWlCclkxQixrQmpCdVAwQjtFMEIrTTFCLFExQm1LeUM7RU0xbUJ6QyxlTjJtQnlDO0VlMW1CdkMsWVd5Y0Y7RUFDQTs7QVhyY0E7RVcwYkY7SVh6Ykk7OztBV3NjRjtFVDVjQSxrQmpCOG1CeUM7O0EwQjdKM0M7RUFDRSxPMUI2SWdDO0UwQjVJaEMsUTFCNklnQztFMEI1SWhDO0VBQ0EsUTFCNElnQztFMEIzSWhDO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLGtCMUJ6ZE87RU1MUCxlTm9tQmdDOztBMEJsSWxDO0VBQ0U7RUFDQSxrQjFCL2RPO0VNTFAsZU5vbUJnQzs7QTBCM0hoQztFQUNFLGtCMUJuZUs7O0EwQnNlUDtFQUNFOztBQUdGO0VBQ0Usa0IxQjNlSzs7QTBCOGVQO0VBQ0U7O0FBR0Y7RUFDRSxrQjFCbmZLOzs7QTBCd2ZYO0FBQUE7QUFBQTtFWDlmTSxZV2lnQko7O0FYNWZFO0VXeWZKO0FBQUE7QUFBQTtJWHhmTTs7OztBWVBOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOztBMUJDQTtFMEJFRTs7QUFJRjtFQUNFLE8zQlZPO0UyQldQO0VBQ0E7OztBQVFKO0VBQ0U7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VyQjNCQSx3Qk5vTzBCO0VNbk8xQix5Qk5tTzBCOztBQ2xPNUI7RTBCNkJJLGMzQnFwQjhCOztBMkJscEJoQztFQUNFLE8zQnBDSztFMkJxQ0w7RUFDQTs7QUFJSjtBQUFBO0VBRUUsTzNCM0NPO0UyQjRDUCxrQjNCbkRPO0UyQm9EUCxjM0Iwb0JnQzs7QTJCdm9CbEM7RUFFRTtFckJsREEsd0JxQm9EMkI7RXJCbkQzQix5QnFCbUQyQjs7O0FBVTdCO0VyQnZFRSxlTjZPMEI7O0EyQmxLNUI7QUFBQTtFQUVFLE8zQjNFTztFMkI0RVAsa0IzQjBLMEI7OztBMkJoSzVCO0VBQ0U7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7OztBQVVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FDcEdKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQW9CSjtFQUNFO0VBQ0EsYTVCcXFCa0M7RTRCcHFCbEMsZ0I1Qm9xQmtDO0U0Qm5xQmxDLGM1QmlGTztFRFRILFdBdENhO0U2QmhDakI7RUFDQTs7QTNCMUNBO0UyQjZDRTs7O0FBU0o7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7OztBQVNKO0VBQ0U7RUFDQSxhNUI0bEJrQztFNEIzbEJsQyxnQjVCMmxCa0M7OztBNEIva0JwQztFQUNFO0VBQ0E7RUFHQTs7O0FBSUY7RUFDRTtFN0JTSSxXQXRDYTtFNkIrQmpCO0VBQ0E7RUFDQTtFdEJySEUsZU42TzBCOztBQ2xPNUI7RTJCOEdFOzs7QUFNSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QWxCbEVFO0VrQjhFSTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFDRTtJQUNBOzs7QWxCN0ZOO0VrQnlGQTtJQW9CSTtJQUNBOztFQUVBO0lBQ0U7O0VBRUE7SUFDRTs7RUFHRjtJQUNFLGU1QmdpQndCO0k0Qi9oQnhCLGM1QitoQndCOztFNEIxaEI1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFDRTs7RUFjRjtJQUNFO0lBR0E7O0VBR0Y7SUFDRTs7O0FsQnhJTjtFa0I4RUk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQ0U7SUFDQTs7O0FsQjdGTjtFa0J5RkE7SUFvQkk7SUFDQTs7RUFFQTtJQUNFOztFQUVBO0lBQ0U7O0VBR0Y7SUFDRSxlNUJnaUJ3QjtJNEIvaEJ4QixjNUIraEJ3Qjs7RTRCMWhCNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQ0U7O0VBY0Y7SUFDRTtJQUdBOztFQUdGO0lBQ0U7OztBbEJ4SU47RWtCOEVJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUNFO0lBQ0E7OztBbEI3Rk47RWtCeUZBO0lBb0JJO0lBQ0E7O0VBRUE7SUFDRTs7RUFFQTtJQUNFOztFQUdGO0lBQ0UsZTVCZ2lCd0I7STRCL2hCeEIsYzVCK2hCd0I7O0U0QjFoQjVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUNFOztFQWNGO0lBQ0U7SUFHQTs7RUFHRjtJQUNFOzs7QWxCeElOO0VrQjhFSTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFDRTtJQUNBOzs7QWxCN0ZOO0VrQnlGQTtJQW9CSTtJQUNBOztFQUVBO0lBQ0U7O0VBRUE7SUFDRTs7RUFHRjtJQUNFLGU1QmdpQndCO0k0Qi9oQnhCLGM1QitoQndCOztFNEIxaEI1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFDRTs7RUFjRjtJQUNFO0lBR0E7O0VBR0Y7SUFDRTs7O0FBNUROO0VBb0JJO0VBQ0E7O0FBbkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFO0VBQ0E7O0FBbUJGO0VBQ0U7O0FBRUE7RUFDRTs7QUFHRjtFQUNFLGU1QmdpQndCO0U0Qi9oQnhCLGM1QitoQndCOztBNEIxaEI1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDRTs7QUFjRjtFQUNFO0VBR0E7O0FBR0Y7RUFDRTs7O0FBY1I7RUFDRSxPNUIwZ0JnQzs7QUMxdEJsQztFMkJtTkksTzVCdWdCOEI7O0E0QmxnQmhDO0VBQ0UsTzVCK2Y4Qjs7QUN4dEJsQztFMkI0Tk0sTzVCNmY0Qjs7QTRCMWY5QjtFQUNFLE81QjJmNEI7O0E0QnZmaEM7QUFBQTtBQUFBO0FBQUE7RUFJRSxPNUJrZjhCOztBNEI5ZWxDO0VBQ0UsTzVCMmVnQztFNEIxZWhDLGM1QitlZ0M7O0E0QjVlbEM7RUFDRTs7QUFHRjtFQUNFLE81QmtlZ0M7O0E0QmplaEM7RUFDRSxPNUJrZThCOztBQzF0QmxDO0UyQjJQTSxPNUIrZDRCOzs7QTRCdmRsQztFQUNFLE81QjdRTzs7QUNTVDtFMkJ1UUksTzVCaFJLOztBNEJxUlA7RUFDRSxPNUJvYzhCOztBQ2p0QmxDO0UyQmdSTSxPNUJrYzRCOztBNEIvYjlCO0VBQ0UsTzVCZ2M0Qjs7QTRCNWJoQztBQUFBO0FBQUE7QUFBQTtFQUlFLE81QnJTSzs7QTRCeVNUO0VBQ0UsTzVCZ2JnQztFNEIvYWhDLGM1Qm9iZ0M7O0E0QmpibEM7RUFDRTs7QUFHRjtFQUNFLE81QnVhZ0M7O0E0QnRhaEM7RUFDRSxPNUJyVEs7O0FDU1Q7RTJCK1NNLE81QnhURzs7O0E2QkhYO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBLGtCN0JKUztFNkJLVDtFQUNBO0V2QlJFLGVONk8wQjs7QTZCbE81QjtFQUNFO0VBQ0E7O0FBSUE7RXZCUkEsd0JOb08wQjtFTW5PMUIseUJObU8wQjs7QTZCdE4xQjtFdkJBQSw0Qk5zTjBCO0VNck4xQiwyQk5xTjBCOzs7QTZCaE45QjtFQUdFO0VBR0E7RUFDQSxTN0JzeEJrQzs7O0E2Qmx4QnBDO0VBQ0UsZTdCZ3hCa0M7OztBNkI3d0JwQztFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBNUIzQ0E7RTRCZ0RFOztBQUdGO0VBQ0UsYTdCK3ZCZ0M7OztBNkJ2dkJwQztFQUNFO0VBQ0E7RUFFQSxrQi9Cc0c4QjtFK0JyRzlCOztBQUVBO0V2QjFFRSxldUIyRXVCOztBQUl2QjtFQUNFOzs7QUFLTjtFQUNFO0VBQ0Esa0IvQnNGOEI7RStCckY5Qjs7QUFFQTtFdkIxRkUsZXVCMkZ1Qjs7O0FBUzNCO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBSUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsUzdCOHNCa0M7OztBNkIzc0JwQztBQUFBO0FBQUE7RUFHRTtFQUNBOzs7QUFHRjtBQUFBO0V2QnhISSx3Qk5xekJnQztFTXB6QmhDLHlCTm96QmdDOzs7QTZCeHJCcEM7QUFBQTtFdkIvR0ksNEJOdXlCZ0M7RU10eUJoQywyQk5zeUJnQzs7O0E2Qi9xQmxDO0VBQ0UsZTdCdXJCZ0M7O0FVaHhCaEM7RW1CdUZKO0lBTUk7SUFDQTtJQUNBO0lBQ0E7O0VBRUE7SUFFRTtJQUNBLGM3QjJxQjhCO0k2QjFxQjlCO0lBQ0EsYTdCeXFCOEI7Ozs7QTZCNXBCbEM7RUFDRSxlN0IycEJnQzs7QVVoeEJoQztFbUJpSEo7SUFRSTtJQUNBOztFQUdBO0lBRUU7SUFDQTs7RUFFQTtJQUNFO0lBQ0E7O0VBS0E7SXZCaExKLHlCdUJpTG1DO0l2QmhMbkMsNEJ1QmdMbUM7O0VBRTdCO0FBQUE7SUFHRTs7RUFFRjtBQUFBO0lBR0U7O0VBSUo7SXZCakxKLHdCdUJrTGtDO0l2QmpMbEMsMkJ1QmlMa0M7O0VBRTVCO0FBQUE7SUFHRTs7RUFFRjtBQUFBO0lBR0U7Ozs7QUFjVjtFQUNFLGU3QmdsQmdDOztBVWx3QmhDO0VtQmdMSjtJQU1JLGM3QjZsQmdDO0k2QjVsQmhDLFk3QjZsQmdDO0k2QjVsQmhDO0lBQ0E7O0VBRUE7SUFDRTtJQUNBOzs7O0FBV0o7RUFDRTs7QUFFQTtFQUNFO0V2QjVPRiw0QnVCNk9nQztFdkI1T2hDLDJCdUI0T2dDOztBQUdoQztFdkI5UEEsd0J1QitQNkI7RXZCOVA3Qix5QnVCOFA2Qjs7QUFHN0I7RXZCM1FBLGV1QjRReUI7RUFDdkI7OztBQ2xSTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGU5QmlpQ2tDO0U4Qi9oQ2xDO0VBQ0Esa0I5QkVTO0VNSlAsZU42TzBCOzs7QThCck81QjtFQUNFLGM5QnFoQ2dDOztBOEJuaENoQztFQUNFO0VBQ0EsZTlCaWhDOEI7RThCaGhDOUIsTzlCTks7RThCT0w7O0FBVUo7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0UsTzlCMUJPOzs7QStCYlg7RUFDRTtFNUJHQTtFQUNBO0VHQUUsZU42TzBCOzs7QStCNU85QjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYS9CbXhCa0M7RStCbHhCbEMsTy9Cc0t3QztFK0JyS3hDLGtCL0JOUztFK0JPVDs7QUFFQTtFQUNFO0VBQ0EsTy9Ca0tzQztFK0JqS3RDO0VBQ0Esa0IvQlhPO0UrQllQLGMvQlhPOztBK0JjVDtFQUNFO0VBQ0EsUy9CNHdCZ0M7RStCM3dCaEMsWS9Ca1gwQjs7O0ErQjVXMUI7RUFDRTtFekJDRix3Qk4rTTBCO0VNOU0xQiwyQk44TTBCOztBK0IzTTFCO0V6QmxCQSx5Qk42TjBCO0VNNU4xQiw0Qk40TjBCOztBK0J0TTVCO0VBQ0U7RUFDQSxPL0J2Q087RStCd0NQLGtCL0I4TTBCO0UrQjdNMUIsYy9CNk0wQjs7QStCMU01QjtFQUNFLE8vQnZDTztFK0J3Q1A7RUFFQTtFQUNBLGtCL0JqRE87RStCa0RQLGMvQi9DTzs7O0FnQ1BUO0VBQ0U7RWpDMkhFLFdBdENhO0VpQ25GZixhaENzTzBCOztBZ0NqT3hCO0UxQndCRix3Qk5nTjBCO0VNL00xQiwyQk4rTTBCOztBZ0NuT3hCO0UxQktGLHlCTjhOMEI7RU03TjFCLDRCTjZOMEI7OztBZ0NoUDVCO0VBQ0U7RWpDMkhFLFdBdENhO0VpQ25GZixhaEN1TzBCOztBZ0NsT3hCO0UxQndCRix3Qk5pTjBCO0VNaE4xQiwyQk5nTjBCOztBZ0NwT3hCO0UxQktGLHlCTitOMEI7RU05TjFCLDRCTjhOMEI7OztBaUMvTzlCO0VBQ0U7RUFDQTtFbENpRUU7RWtDL0RGLGFqQzJSNEI7RWlDMVI1QjtFQUNBO0VBQ0E7RUFDQTtFM0JSRSxlTjZPMEI7RWU1T3hCLFlrQlNKOztBbEJKRTtFa0JOSjtJbEJPTTs7O0FkSUo7RWdDR0k7OztBQUtKO0VBQ0U7OztBQUtKO0VBQ0U7RUFDQTs7O0FBT0Y7RUFDRSxlakM2M0JrQztFaUM1M0JsQyxjakM0M0JrQztFTWg2QmhDLGVObTZCZ0M7OztBaUN0M0JsQztFQ2pEQTtFQUNBLGtCbEM2RWE7O0FDL0RiO0VpQ1ZJO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOzs7QURxQ0o7RUNqREE7RUFDQSxrQmxDNkVhOztBQy9EYjtFaUNWSTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7O0FEcUNKO0VDakRBO0VBQ0Esa0JsQzZFYTs7QUMvRGI7RWlDVkk7RUFDQTs7QUFHRjtFQUVFO0VBQ0E7OztBRHFDSjtFQ2pEQTtFQUNBLGtCbEM2RWE7O0FDL0RiO0VpQ1ZJO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOzs7QURxQ0o7RUNqREE7RUFDQSxrQmxDNkVhOztBQy9EYjtFaUNWSTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7O0FEcUNKO0VDakRBO0VBQ0Esa0JsQzZFYTs7QUMvRGI7RWlDVkk7RUFDQTs7QUFHRjtFQUVFO0VBQ0E7OztBRHFDSjtFQ2pEQTtFQUNBLGtCbEM2RWE7O0FDL0RiO0VpQ1ZJO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOzs7QURxQ0o7RUNqREE7RUFDQSxrQmxDNkVhOztBQy9EYjtFaUNWSTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7O0FDYk47RUFDRTtFQUNBLGVuQ3F6QmtDO0VtQ256QmxDLGtCbkNLUztFTUpQLGVOOE8wQjs7QVV2TDFCO0V5QjVESjtJQVFJOzs7O0FBSUo7RUFDRTtFQUNBO0U3QlRFLGU2QlVxQjs7O0FDWHpCO0VBQ0U7RUFDQTtFQUNBLGVwQ3E5QmtDO0VvQ3A5QmxDO0U5QkhFLGVONk8wQjs7O0FvQ3JPOUI7RUFFRTs7O0FBSUY7RUFDRSxhcENnUjRCOzs7QW9DeFE5QjtFQUNFOztBQUdBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBVUY7RUM5Q0EsT0QrQ3FIO0VuQjFDbkgsa0JtQjBDdUI7RUM3Q3pCLGNENkNxRTs7QUMzQ3JFO0VBQ0U7O0FBR0Y7RUFDRTs7O0FEcUNGO0VDOUNBLE9EK0NxSDtFbkIxQ25ILGtCbUIwQ3VCO0VDN0N6QixjRDZDcUU7O0FDM0NyRTtFQUNFOztBQUdGO0VBQ0U7OztBRHFDRjtFQzlDQSxPRCtDcUg7RW5CMUNuSCxrQm1CMEN1QjtFQzdDekIsY0Q2Q3FFOztBQzNDckU7RUFDRTs7QUFHRjtFQUNFOzs7QURxQ0Y7RUM5Q0EsT0QrQ3FIO0VuQjFDbkgsa0JtQjBDdUI7RUM3Q3pCLGNENkNxRTs7QUMzQ3JFO0VBQ0U7O0FBR0Y7RUFDRTs7O0FEcUNGO0VDOUNBLE9EK0NxSDtFbkIxQ25ILGtCbUIwQ3VCO0VDN0N6QixjRDZDcUU7O0FDM0NyRTtFQUNFOztBQUdGO0VBQ0U7OztBRHFDRjtFQzlDQSxPRCtDcUg7RW5CMUNuSCxrQm1CMEN1QjtFQzdDekIsY0Q2Q3FFOztBQzNDckU7RUFDRTs7QUFHRjtFQUNFOzs7QURxQ0Y7RUM5Q0EsT0QrQ3FIO0VuQjFDbkgsa0JtQjBDdUI7RUM3Q3pCLGNENkNxRTs7QUMzQ3JFO0VBQ0U7O0FBR0Y7RUFDRTs7O0FEcUNGO0VDOUNBLE9EK0NxSDtFbkIxQ25ILGtCbUIwQ3VCO0VDN0N6QixjRDZDcUU7O0FDM0NyRTtFQUNFOztBQUdGO0VBQ0U7OztBQ1JGO0VBQ0U7SUFBTzs7RUFDUDtJQUFLOzs7QUFJVDtFQUNFO0VBQ0EsUXRDODlCa0M7RXNDNzlCbEM7RXZDb0hJLFdBdENhO0V1QzVFakIsa0J0Q0pTO0VNSlAsZU42TzBCOzs7QXNDaE85QjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT3RDaEJTO0VzQ2lCVDtFQUNBO0VBQ0Esa0J0Q285QmtDO0VleCtCOUIsWXVCcUJKOztBdkJoQkU7RXVCT0o7SXZCTk07Ozs7QXVCa0JOO0VyQmFFO0VxQlhBOzs7QUFJQTtFQUNFOztBQUdFO0VBSko7SUFLTTs7OztBQ3pDUjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQ0ZGO0VBQ0U7RUFDQTtFQUdBO0VBQ0E7OztBQVNGO0VBQ0U7RUFDQSxPeENQUztFd0NRVDs7QXZDTkE7RXVDVUU7RUFDQSxPeENiTztFd0NjUDtFQUNBLGtCeENyQk87O0F3Q3dCVDtFQUNFLE94Q2pCTztFd0NrQlAsa0J4Q3pCTzs7O0F3Q2tDWDtFQUNFO0VBQ0E7RUFDQTtFQUVBLGtCeEN6Q1M7RXdDMENUOztBQUVBO0VsQ3JDRSx3Qk5vTzBCO0VNbk8xQix5Qk5tTzBCOztBd0MzTDVCO0VsQzNCRSw0Qk5zTjBCO0VNck4xQiwyQk5xTjBCOztBd0N2TDVCO0VBRUUsT3hDaERPO0V3Q2lEUDtFQUNBLGtCeEN4RE87O0F3QzREVDtFQUNFO0VBQ0EsT3hDOURPO0V3QytEUCxrQnhDdUwwQjtFd0N0TDFCLGN4Q3NMMEI7O0F3Q25MNUI7RUFDRTs7QUFFQTtFQUNFO0VBQ0Esa0J4Q2dLd0I7OztBd0NsSjFCO0VBQ0U7O0FBR0U7RWxDckNKLDJCTnNMMEI7RU1sTTFCLHlCa0NtRHVDOztBQUduQztFbEN0REoseUJOa00wQjtFTXRMMUIsMkJrQzRDeUM7O0FBR3JDO0VBQ0U7O0FBR0Y7RUFDRSxrQnhDK0hvQjtFd0M5SHBCOztBQUVBO0VBQ0U7RUFDQSxtQnhDMEhrQjs7O0FVbkwxQjtFOEJpQ0E7SUFDRTs7RUFHRTtJbENyQ0osMkJOc0wwQjtJTWxNMUIseUJrQ21EdUM7O0VBR25DO0lsQ3RESix5Qk5rTTBCO0lNdEwxQiwyQmtDNEN5Qzs7RUFHckM7SUFDRTs7RUFHRjtJQUNFLGtCeEMrSG9CO0l3QzlIcEI7O0VBRUE7SUFDRTtJQUNBLG1CeEMwSGtCOzs7QVVuTDFCO0U4QmlDQTtJQUNFOztFQUdFO0lsQ3JDSiwyQk5zTDBCO0lNbE0xQix5QmtDbUR1Qzs7RUFHbkM7SWxDdERKLHlCTmtNMEI7SU10TDFCLDJCa0M0Q3lDOztFQUdyQztJQUNFOztFQUdGO0lBQ0Usa0J4QytIb0I7SXdDOUhwQjs7RUFFQTtJQUNFO0lBQ0EsbUJ4QzBIa0I7OztBVW5MMUI7RThCaUNBO0lBQ0U7O0VBR0U7SWxDckNKLDJCTnNMMEI7SU1sTTFCLHlCa0NtRHVDOztFQUduQztJbEN0REoseUJOa00wQjtJTXRMMUIsMkJrQzRDeUM7O0VBR3JDO0lBQ0U7O0VBR0Y7SUFDRSxrQnhDK0hvQjtJd0M5SHBCOztFQUVBO0lBQ0U7SUFDQSxtQnhDMEhrQjs7O0FVbkwxQjtFOEJpQ0E7SUFDRTs7RUFHRTtJbENyQ0osMkJOc0wwQjtJTWxNMUIseUJrQ21EdUM7O0VBR25DO0lsQ3RESix5Qk5rTTBCO0lNdEwxQiwyQmtDNEN5Qzs7RUFHckM7SUFDRTs7RUFHRjtJQUNFLGtCeEMrSG9CO0l3QzlIcEI7O0VBRUE7SUFDRTtJQUNBLG1CeEMwSGtCOzs7QXdDM0c1QjtFQUNFO0VBQ0E7RWxDaklBLGVrQ2tJdUI7O0FBRXZCO0VBQ0U7O0FBS0Y7RUFDRTs7O0FDN0lKO0VBQ0UsT0R3SnNFO0VDdkp0RSxrQkR1SnVDOztBdkM1SXpDO0V3Q1BNLE9EbUprRTtFQ2xKbEU7O0FBR0Y7RUFDRSxPM0N3REE7RTJDdkRBLGtCRDZJa0U7RUM1SWxFLGNENElrRTs7O0FDekp4RTtFQUNFLE9Ed0pzRTtFQ3ZKdEUsa0JEdUp1Qzs7QXZDNUl6QztFd0NQTSxPRG1Ka0U7RUNsSmxFOztBQUdGO0VBQ0UsTzNDd0RBO0UyQ3ZEQSxrQkQ2SWtFO0VDNUlsRSxjRDRJa0U7OztBQ3pKeEU7RUFDRSxPRHdKc0U7RUN2SnRFLGtCRHVKdUM7O0F2QzVJekM7RXdDUE0sT0RtSmtFO0VDbEpsRTs7QUFHRjtFQUNFLE8zQ3dEQTtFMkN2REEsa0JENklrRTtFQzVJbEUsY0Q0SWtFOzs7QUN6SnhFO0VBQ0UsT0R3SnNFO0VDdkp0RSxrQkR1SnVDOztBdkM1SXpDO0V3Q1BNLE9EbUprRTtFQ2xKbEU7O0FBR0Y7RUFDRSxPM0N3REE7RTJDdkRBLGtCRDZJa0U7RUM1SWxFLGNENElrRTs7O0FDekp4RTtFQUNFLE9Ed0pzRTtFQ3ZKdEUsa0JEdUp1Qzs7QXZDNUl6QztFd0NQTSxPRG1Ka0U7RUNsSmxFOztBQUdGO0VBQ0UsTzNDd0RBO0UyQ3ZEQSxrQkQ2SWtFO0VDNUlsRSxjRDRJa0U7OztBQ3pKeEU7RUFDRSxPRHdKc0U7RUN2SnRFLGtCRHVKdUM7O0F2QzVJekM7RXdDUE0sT0RtSmtFO0VDbEpsRTs7QUFHRjtFQUNFLE8zQ3dEQTtFMkN2REEsa0JENklrRTtFQzVJbEUsY0Q0SWtFOzs7QUN6SnhFO0VBQ0UsT0R3SnNFO0VDdkp0RSxrQkR1SnVDOztBdkM1SXpDO0V3Q1BNLE9EbUprRTtFQ2xKbEU7O0FBR0Y7RUFDRSxPM0N3REE7RTJDdkRBLGtCRDZJa0U7RUM1SWxFLGNENElrRTs7O0FDekp4RTtFQUNFLE9Ed0pzRTtFQ3ZKdEUsa0JEdUp1Qzs7QXZDNUl6QztFd0NQTSxPRG1Ka0U7RUNsSmxFOztBQUdGO0VBQ0UsTzNDd0RBO0UyQ3ZEQSxrQkQ2SWtFO0VDNUlsRSxjRDRJa0U7OztBRTVKMUU7RUFDRTtFM0M4SEksV0F0Q2E7RTJDdEZqQixhMUNpUzRCO0UwQ2hTNUI7RUFDQSxPMUNZUztFMENYVCxhMUNvbENrQztFMENubENsQzs7QXpDS0E7RXlDREUsTzFDTU87RTBDTFA7O0F6Q0lGO0V5Q0NJOzs7QUFXTjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFNRjtFQUNFOzs7QUN2Q0Y7RUFDRSxXM0N5NEJrQztFMkN4NEJsQztFNUM2SEksV0F0Q2E7RTRDcEZqQixrQjNDMDRCa0M7RTJDejRCbEM7RUFDQTtFQUNBLFkzQzI0QmtDO0UyQzE0QmxDO0VBQ0E7RXJDTEUsZU42NEJnQzs7QTJDcjRCbEM7RUFDRSxlM0M2M0JnQzs7QTJDMTNCbEM7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQSxPM0N0QlM7RTJDdUJULGtCM0NrM0JrQztFMkNqM0JsQztFQUNBOzs7QUFHRjtFQUNFLFMzQ2kyQmtDOzs7QTRDcjRCcEM7RUFFRTs7QUFFQTtFQUNFO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsUzVDK3BCa0M7RTRDOXBCbEM7RUFDQTtFQUNBO0VBQ0E7RUFHQTs7O0FBT0Y7RUFDRTtFQUNBO0VBQ0EsUTVDNjRCa0M7RTRDMzRCbEM7O0FBR0E7RTdCckNJLFk2QnNDRjtFQUNBLFc1Q202QmdDOztBZXI4QmhDO0U2QmdDRjtJN0IvQkk7OztBNkJtQ0o7RUFDRSxXNUNpNkJnQzs7QTRDNzVCbEM7RUFDRSxXNUM4NUJnQzs7O0E0QzE1QnBDO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUdBO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBR0Y7RUFDRTs7O0FBTU47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0Esa0I1QzFHUztFNEMyR1Q7RUFDQTtFdEM5R0UsZU44TzBCO0U0QzVINUI7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsUzVDb2pCa0M7RTRDbmpCbEM7RUFDQTtFQUNBLGtCNUNqSFM7O0E0Q29IVDtFQUFTOztBQUNUO0VBQVMsUzVDNHpCeUI7OztBNEN2ekJwQztFQUNFO0VBQ0E7RUFDQTtFQUNBLFM1QzB6QmtDO0U0Q3p6QmxDO0V0Q2xJRSx3Qk4rNkJnQztFTTk2QmhDLHlCTjg2QmdDOztBNEMxeUJsQztFQUNFLFM1Q3F6QmdDO0U0Q256QmhDOzs7QUFLSjtFQUNFO0VBQ0EsYTVDMkk0Qjs7O0E0Q3RJOUI7RUFDRTtFQUdBO0VBQ0EsUzVDdXdCa0M7OztBNENud0JwQztFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFdENySkUsNEJOaTZCZ0M7RU1oNkJoQywyQk5nNkJnQzs7QTRDcndCbEM7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QWxDdklFO0VrQzZJRjtJQUNFLFc1Q213QmdDO0k0Q2x3QmhDOzs7RUFHRjtJQUNFOztFQUVBO0lBQ0U7OztFQUlKO0lBQ0U7O0VBRUE7SUFDRTs7O0VBUUo7SUFBWSxXNUM0dUJzQjs7O0FVbDVCaEM7RWtDMEtGO0FBQUE7SUFFRSxXNUNvdUJnQzs7O0FVaDVCaEM7RWtDaUxGO0lBQVksVzVDOHRCc0I7OztBNkMxOEJwQztFQUNFO0VBQ0EsUzdDbXJCa0M7RTZDbHJCbEM7RUFDQSxRN0N5MUJrQztFOEM3MUJsQyxhaEQ4SThCO0VnRDVJOUI7RUFDQSxhOUMrUjRCO0U4QzlSNUIsYTlDbVM0QjtFOENsUzVCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0UvQ2dISSxXQXRDYTtFOEM5RWpCO0VBQ0E7O0FBRUE7RUFBUyxTN0M2MEJ5Qjs7QTZDMzBCbEM7RUFDRTtFQUNBO0VBQ0EsTzdDNjBCZ0M7RTZDNTBCaEMsUTdDNjBCZ0M7O0E2QzMwQmhDO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUtOO0VBQ0U7O0FBRUE7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQSxrQjdDdkJLOzs7QTZDNEJYO0VBQ0U7O0FBRUE7RUFDRTtFQUNBLE83Qyt5QmdDO0U2Qzl5QmhDLFE3QzZ5QmdDOztBNkMzeUJoQztFQUNFO0VBQ0E7RUFDQSxvQjdDdkNLOzs7QTZDNENYO0VBQ0U7O0FBRUE7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQSxxQjdDckRLOzs7QTZDMERYO0VBQ0U7O0FBRUE7RUFDRTtFQUNBLE83Q2l4QmdDO0U2Q2h4QmhDLFE3Qyt3QmdDOztBNkM3d0JoQztFQUNFO0VBQ0E7RUFDQSxtQjdDckVLOzs7QTZDMEZYO0VBQ0UsVzdDMnVCa0M7RTZDMXVCbEM7RUFDQSxPN0N2R1M7RTZDd0dUO0VBQ0Esa0I3Qy9GUztFTVpQLGVONk8wQjs7O0ErQ2xQOUI7RUFDRTtFQUNBO0VBQ0E7RUFDQSxTL0NpckJrQztFK0NockJsQztFQUNBLFcvQzIyQmtDO0U4Q2gzQmxDLGFoRDhJOEI7RWdENUk5QjtFQUNBLGE5QytSNEI7RThDOVI1QixhOUNtUzRCO0U4Q2xTNUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RS9DZ0hJLFdBdENhO0VnRDdFakI7RUFDQSxrQi9DTlM7RStDT1Q7RUFDQTtFekNWRSxlTjhPMEI7O0ErQ2hPNUI7RUFDRTtFQUNBO0VBQ0EsTy9DMjJCZ0M7RStDMTJCaEMsUS9DMjJCZ0M7RStDMTJCaEM7O0FBRUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLTjtFQUNFLGUvQzQxQmtDOztBK0MxMUJsQztFQUNFOztBQUVBO0VBQ0U7RUFDQTtFQUNBLGtCL0N1MUI4Qjs7QStDcDFCaEM7RUFDRSxRL0M2THdCO0UrQzVMeEI7RUFDQSxrQi9DN0NLOzs7QStDa0RYO0VBQ0UsYS9DdzBCa0M7O0ErQ3QwQmxDO0VBQ0U7RUFDQSxPL0NvMEJnQztFK0NuMEJoQyxRL0NrMEJnQztFK0NqMEJoQzs7QUFFQTtFQUNFO0VBQ0E7RUFDQSxvQi9DZzBCOEI7O0ErQzd6QmhDO0VBQ0UsTS9Dc0t3QjtFK0NyS3hCO0VBQ0Esb0IvQ3BFSzs7O0ErQ3lFWDtFQUNFLFkvQ2l6QmtDOztBK0MveUJsQztFQUNFOztBQUVBO0VBQ0U7RUFDQTtFQUNBLHFCL0M0eUI4Qjs7QStDenlCaEM7RUFDRSxLL0NrSndCO0UrQ2pKeEI7RUFDQSxxQi9DeEZLOztBK0M2RlQ7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE8vQ3d4QmdDO0UrQ3Z4QmhDO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRSxjL0NpeEJrQzs7QStDL3dCbEM7RUFDRTtFQUNBLE8vQzZ3QmdDO0UrQzV3QmhDLFEvQzJ3QmdDO0UrQzF3QmhDOztBQUVBO0VBQ0U7RUFDQTtFQUNBLG1CL0N5d0I4Qjs7QStDdHdCaEM7RUFDRSxPL0MrR3dCO0UrQzlHeEI7RUFDQSxtQi9DM0hLOzs7QStDaUpYO0VBQ0U7RUFDQTtFaEQzQkksV0F0Q2E7RWdEb0VqQixrQi9DMnRCa0M7RStDMXRCbEM7RXpDaEpFLHdCTnUyQmdDO0VNdDJCaEMseUJOczJCZ0M7O0ErQ3B0QmxDO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQSxPL0N4SlM7OztBZ0RIWDtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUN2QkE7RUFDRTtFQUNBO0VBQ0E7OztBRHdCSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFakM1QkksWWlDNkJKOztBakN4QkU7RWlDaUJKO0lqQ2hCTTs7OztBaUMwQk47QUFBQTtBQUFBO0VBR0U7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFTQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtBQUFBO0FBQUE7RUFHRTtFQUNBOztBQUdGO0FBQUE7RUFFRTtFQUNBO0VqQ3RFRSxZaUN1RUY7O0FqQ2xFQTtFaUM4REY7QUFBQTtJakM3REk7Ozs7QWlDMEVOO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBLE9oRGs5Qm1DO0VnRGo5Qm5DLE9oRDFGUztFZ0QyRlQ7RUFDQSxTaERnOUJtQztFZTdpQy9CLFlpQzhGSjs7QWpDekZFO0VpQzJFSjtBQUFBO0lqQzFFTTs7O0FkSUo7QUFBQTtBQUFBO0UrQ3dGRSxPaERqR087RWdEa0dQO0VBQ0E7RUFDQSxTaER5OEJpQzs7O0FnRHQ4QnJDO0VBQ0U7OztBQUtGO0VBQ0U7OztBQU9GO0FBQUE7RUFFRTtFQUNBLE9oRGs4Qm1DO0VnRGo4Qm5DLFFoRGk4Qm1DO0VnRGg4Qm5DOzs7QUFFRjtFQUNFOzs7QUFFRjtFQUNFOzs7QUFTRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSxjaER3NUJtQztFZ0R2NUJuQyxhaER1NUJtQztFZ0R0NUJuQzs7QUFFQTtFQUNFO0VBQ0E7RUFDQSxPaERzNUJpQztFZ0RyNUJqQyxRaERzNUJpQztFZ0RyNUJqQyxjaER1NUJpQztFZ0R0NUJqQyxhaERzNUJpQztFZ0RyNUJqQztFQUNBO0VBQ0Esa0JoRGhLTztFZ0RpS1A7RUFFQTtFQUNBO0VBQ0E7RWpDdEtFLFlpQ3VLRjs7QWpDbEtBO0VpQ21KRjtJakNsSkk7OztBaUNvS0o7RUFDRTs7O0FBU0o7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9oRDNMUztFZ0Q0TFQ7OztBRS9MRjtFQUNFO0lBQUs7OztBQUdQO0VBQ0U7RUFDQSxPbERra0NzQjtFa0Rqa0N0QixRbERpa0NzQjtFa0Roa0N0QjtFQUNBO0VBQ0E7RUFFQTtFQUNBOzs7QUFHRjtFQUNFLE9sRDJqQ3dCO0VrRDFqQ3hCLFFsRDBqQ3dCO0VrRHpqQ3hCLGNsRDJqQ3dCOzs7QWtEcGpDMUI7RUFDRTtJQUNFOztFQUVGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQSxPbERtaUNzQjtFa0RsaUN0QixRbERraUNzQjtFa0RqaUN0QjtFQUNBO0VBRUE7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLE9sRDRoQ3dCO0VrRDNoQ3hCLFFsRDJoQ3dCOzs7QW1EOWtDMUI7RUFBcUI7OztBQUNyQjtFQUFxQjs7O0FBQ3JCO0VBQXFCOzs7QUFDckI7RUFBcUI7OztBQUNyQjtFQUFxQjs7O0FBQ3JCO0VBQXFCOzs7QUNGbkI7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FBTko7RUFDRTs7O0FuRFVGO0FBQUE7QUFBQTtFbURMSTs7O0FDQ047RUFDRTs7O0FBR0Y7RUFDRTs7O0FDWEY7RUFBa0I7OztBQUNsQjtFQUFrQjs7O0FBQ2xCO0VBQWtCOzs7QUFDbEI7RUFBa0I7OztBQUNsQjtFQUFrQjs7O0FBRWxCO0VBQW1COzs7QUFDbkI7RUFBbUI7OztBQUNuQjtFQUFtQjs7O0FBQ25CO0VBQW1COzs7QUFDbkI7RUFBbUI7OztBQUdqQjtFQUNFOzs7QUFERjtFQUNFOzs7QUFERjtFQUNFOzs7QUFERjtFQUNFOzs7QUFERjtFQUNFOzs7QUFERjtFQUNFOzs7QUFERjtFQUNFOzs7QUFERjtFQUNFOzs7QUFJSjtFQUNFOzs7QUFPRjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7OztBTHhFQTtFQUNFO0VBQ0E7RUFDQTs7O0FNT0U7RUFBd0I7OztBQUF4QjtFQUF3Qjs7O0FBQXhCO0VBQXdCOzs7QUFBeEI7RUFBd0I7OztBQUF4QjtFQUF3Qjs7O0FBQXhCO0VBQXdCOzs7QUFBeEI7RUFBd0I7OztBQUF4QjtFQUF3Qjs7O0FBQXhCO0VBQXdCOzs7QTdDaUQxQjtFNkNqREU7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7QTdDaUQxQjtFNkNqREU7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7QTdDaUQxQjtFNkNqREU7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7QTdDaUQxQjtFNkNqREU7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7RUFBeEI7SUFBd0I7OztFQUF4QjtJQUF3Qjs7O0VBQXhCO0lBQXdCOzs7QUFVOUI7RUFFSTtJQUFxQjs7O0VBQXJCO0lBQXFCOzs7RUFBckI7SUFBcUI7OztFQUFyQjtJQUFxQjs7O0VBQXJCO0lBQXFCOzs7RUFBckI7SUFBcUI7OztFQUFyQjtJQUFxQjs7O0VBQXJCO0lBQXFCOzs7RUFBckI7SUFBcUI7OztBQ3JCekI7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0VBS0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQVNBO0VBQ0U7OztBQURGO0VBQ0U7OztBQURGO0VBQ0U7OztBQURGO0VBQ0U7OztBQURGO0VBQ0U7OztBQURGO0VBQ0U7OztBQURGO0VBQ0U7OztBQURGO0VBQ0U7OztBQ3pCRjtFQUFnQzs7O0FBQ2hDO0VBQWdDOzs7QUFDaEM7RUFBZ0M7OztBQUNoQztFQUFnQzs7O0FBRWhDO0VBQThCOzs7QUFDOUI7RUFBOEI7OztBQUM5QjtFQUE4Qjs7O0FBQzlCO0VBQThCOzs7QUFDOUI7RUFBOEI7OztBQUM5QjtFQUE4Qjs7O0FBQzlCO0VBQThCOzs7QUFDOUI7RUFBOEI7OztBQUU5QjtFQUFvQzs7O0FBQ3BDO0VBQW9DOzs7QUFDcEM7RUFBb0M7OztBQUNwQztFQUFvQzs7O0FBQ3BDO0VBQW9DOzs7QUFFcEM7RUFBaUM7OztBQUNqQztFQUFpQzs7O0FBQ2pDO0VBQWlDOzs7QUFDakM7RUFBaUM7OztBQUNqQztFQUFpQzs7O0FBRWpDO0VBQWtDOzs7QUFDbEM7RUFBa0M7OztBQUNsQztFQUFrQzs7O0FBQ2xDO0VBQWtDOzs7QUFDbEM7RUFBa0M7OztBQUNsQztFQUFrQzs7O0FBRWxDO0VBQWdDOzs7QUFDaEM7RUFBZ0M7OztBQUNoQztFQUFnQzs7O0FBQ2hDO0VBQWdDOzs7QUFDaEM7RUFBZ0M7OztBQUNoQztFQUFnQzs7O0EvQ1loQztFK0NsREE7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUVoQztJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFFOUI7SUFBb0M7OztFQUNwQztJQUFvQzs7O0VBQ3BDO0lBQW9DOzs7RUFDcEM7SUFBb0M7OztFQUNwQztJQUFvQzs7O0VBRXBDO0lBQWlDOzs7RUFDakM7SUFBaUM7OztFQUNqQztJQUFpQzs7O0VBQ2pDO0lBQWlDOzs7RUFDakM7SUFBaUM7OztFQUVqQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUNsQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUVsQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztBL0NZaEM7RStDbERBO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFFaEM7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBRTlCO0lBQW9DOzs7RUFDcEM7SUFBb0M7OztFQUNwQztJQUFvQzs7O0VBQ3BDO0lBQW9DOzs7RUFDcEM7SUFBb0M7OztFQUVwQztJQUFpQzs7O0VBQ2pDO0lBQWlDOzs7RUFDakM7SUFBaUM7OztFQUNqQztJQUFpQzs7O0VBQ2pDO0lBQWlDOzs7RUFFakM7SUFBa0M7OztFQUNsQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUNsQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFFbEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7QS9DWWhDO0UrQ2xEQTtJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBRWhDO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUU5QjtJQUFvQzs7O0VBQ3BDO0lBQW9DOzs7RUFDcEM7SUFBb0M7OztFQUNwQztJQUFvQzs7O0VBQ3BDO0lBQW9DOzs7RUFFcEM7SUFBaUM7OztFQUNqQztJQUFpQzs7O0VBQ2pDO0lBQWlDOzs7RUFDakM7SUFBaUM7OztFQUNqQztJQUFpQzs7O0VBRWpDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUNsQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUNsQztJQUFrQzs7O0VBRWxDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0EvQ1loQztFK0NsREE7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUVoQztJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFDOUI7SUFBOEI7OztFQUM5QjtJQUE4Qjs7O0VBQzlCO0lBQThCOzs7RUFFOUI7SUFBb0M7OztFQUNwQztJQUFvQzs7O0VBQ3BDO0lBQW9DOzs7RUFDcEM7SUFBb0M7OztFQUNwQztJQUFvQzs7O0VBRXBDO0lBQWlDOzs7RUFDakM7SUFBaUM7OztFQUNqQztJQUFpQzs7O0VBQ2pDO0lBQWlDOzs7RUFDakM7SUFBaUM7OztFQUVqQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUNsQztJQUFrQzs7O0VBQ2xDO0lBQWtDOzs7RUFDbEM7SUFBa0M7OztFQUVsQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztFQUNoQztJQUFnQzs7O0VBQ2hDO0lBQWdDOzs7RUFDaEM7SUFBZ0M7OztBQzFDaEM7RUFBd0I7OztBQUN4QjtFQUF3Qjs7O0FBQ3hCO0VBQXdCOzs7QWhEb0R4QjtFZ0R0REE7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0VBQ3hCO0lBQXdCOzs7QWhEb0R4QjtFZ0R0REE7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0VBQ3hCO0lBQXdCOzs7QWhEb0R4QjtFZ0R0REE7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0VBQ3hCO0lBQXdCOzs7QWhEb0R4QjtFZ0R0REE7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0VBQ3hCO0lBQXdCOzs7QUNMMUI7RUFBc0I7OztBQUF0QjtFQUFzQjs7O0FDQ3RCO0VBQXlCOzs7QUFBekI7RUFBeUI7OztBQUF6QjtFQUF5Qjs7O0FBQXpCO0VBQXlCOzs7QUFBekI7RUFBeUI7OztBQUszQjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsUzVEb3FCa0M7OztBNERqcUJwQztFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsUzVENHBCa0M7OztBNER4cEJsQztFQURGO0lBRUk7SUFDQTtJQUNBLFM1RG9wQmdDOzs7O0E2RDdxQnBDO0VDRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFVQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FDN0JKO0VBQWE7OztBQUNiO0VBQVU7OztBQUNWO0VBQWE7OztBQUNiO0VBQWU7OztBQ0NYO0VBQXVCOzs7QUFBdkI7RUFBdUI7OztBQUF2QjtFQUF1Qjs7O0FBQXZCO0VBQXVCOzs7QUFBdkI7RUFBdUI7OztBQUF2QjtFQUF1Qjs7O0FBQXZCO0VBQXVCOzs7QUFBdkI7RUFBdUI7OztBQUF2QjtFQUF1Qjs7O0FBQXZCO0VBQXVCOzs7QUFJM0I7RUFBVTs7O0FBQ1Y7RUFBVTs7O0FBSVY7RUFBYzs7O0FBQ2Q7RUFBYzs7O0FBRWQ7RUFBVTs7O0FBQ1Y7RUFBVTs7O0FDZFI7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7OztBQ05JO0VBQWdDOzs7QUFDaEM7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFmRjtFQUFnQzs7O0FBQ2hDO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBZkY7RUFBZ0M7OztBQUNoQztBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQWZGO0VBQWdDOzs7QUFDaEM7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFmRjtFQUFnQzs7O0FBQ2hDO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBZkY7RUFBZ0M7OztBQUNoQztBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQWZGO0VBQWdDOzs7QUFDaEM7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFmRjtFQUFnQzs7O0FBQ2hDO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBZkY7RUFBZ0M7OztBQUNoQztBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQWZGO0VBQWdDOzs7QUFDaEM7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFmRjtFQUFnQzs7O0FBQ2hDO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBZkY7RUFBZ0M7OztBQUNoQztBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQVFGO0VBQXdCOzs7QUFDeEI7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFmRjtFQUF3Qjs7O0FBQ3hCO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBZkY7RUFBd0I7OztBQUN4QjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQWZGO0VBQXdCOzs7QUFDeEI7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFmRjtFQUF3Qjs7O0FBQ3hCO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBTU47RUFBbUI7OztBQUNuQjtBQUFBO0VBRUU7OztBQUVGO0FBQUE7RUFFRTs7O0FBRUY7QUFBQTtFQUVFOzs7QUFFRjtBQUFBO0VBRUU7OztBeERURjtFd0RsREk7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBUUY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUF3Qjs7O0VBQ3hCO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFNTjtJQUFtQjs7O0VBQ25CO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0F4RFRGO0V3RGxESTtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFRRjtJQUF3Qjs7O0VBQ3hCO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUF3Qjs7O0VBQ3hCO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQU1OO0lBQW1COzs7RUFDbkI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7QXhEVEY7RXdEbERJO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQVFGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUF3Qjs7O0VBQ3hCO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUF3Qjs7O0VBQ3hCO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBTU47SUFBbUI7OztFQUNuQjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztBeERURjtFd0RsREk7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBZ0M7OztFQUNoQztBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQWdDOzs7RUFDaEM7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUFnQzs7O0VBQ2hDO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBUUY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFmRjtJQUF3Qjs7O0VBQ3hCO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBZkY7SUFBd0I7OztFQUN4QjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQWZGO0lBQXdCOzs7RUFDeEI7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFNTjtJQUFtQjs7O0VBQ25CO0FBQUE7SUFFRTs7O0VBRUY7QUFBQTtJQUVFOzs7RUFFRjtBQUFBO0lBRUU7OztFQUVGO0FBQUE7SUFFRTs7O0FDL0ROO0VBQWtCOzs7QUFJbEI7RUFBaUI7OztBQUNqQjtFQUFpQjs7O0FBQ2pCO0VBQWlCOzs7QUFDakI7RUNURTtFQUNBO0VBQ0E7OztBRGVFO0VBQXdCOzs7QUFDeEI7RUFBd0I7OztBQUN4QjtFQUF3Qjs7O0F6RHFDeEI7RXlEdkNBO0lBQXdCOzs7RUFDeEI7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0F6RHFDeEI7RXlEdkNBO0lBQXdCOzs7RUFDeEI7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0F6RHFDeEI7RXlEdkNBO0lBQXdCOzs7RUFDeEI7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0F6RHFDeEI7RXlEdkNBO0lBQXdCOzs7RUFDeEI7SUFBd0I7OztFQUN4QjtJQUF3Qjs7O0FBTTVCO0VBQW1COzs7QUFDbkI7RUFBbUI7OztBQUNuQjtFQUFtQjs7O0FBSW5CO0VBQXVCOzs7QUFDdkI7RUFBdUI7OztBQUN2QjtFQUF1Qjs7O0FBQ3ZCO0VBQXVCOzs7QUFDdkI7RUFBdUI7OztBQUN2QjtFQUF1Qjs7O0FBSXZCO0VBQWM7OztBRXZDWjtFQUNFOzs7QXBFVUY7RW9FTE07OztBQU5OO0VBQ0U7OztBcEVVRjtFb0VMTTs7O0FBTk47RUFDRTs7O0FwRVVGO0VvRUxNOzs7QUFOTjtFQUNFOzs7QXBFVUY7RW9FTE07OztBQU5OO0VBQ0U7OztBcEVVRjtFb0VMTTs7O0FBTk47RUFDRTs7O0FwRVVGO0VvRUxNOzs7QUFOTjtFQUNFOzs7QXBFVUY7RW9FTE07OztBQU5OO0VBQ0U7OztBcEVVRjtFb0VMTTs7O0FGdUNSO0VBQWE7OztBQUNiO0VBQWM7OztBQUVkO0VBQWlCOzs7QUFDakI7RUFBaUI7OztBQUlqQjtFR3ZERTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUh1REY7RUFBd0I7OztBQUV4QjtFQUNFO0VBQ0E7OztBQUtGO0VBQWM7OztBSWpFZDtFQUNFOzs7QUFHRjtFQUNFOzs7QUNBQTtFQUNFO0FBQUE7QUFBQTtJQUtFO0lBRUE7OztFQUlBO0lBQ0U7OztFQVNKO0lBQ0U7OztFQWNGO0lBQ0U7OztFQUVGO0FBQUE7SUFFRTtJQUNBOzs7RUFRRjtJQUNFOzs7RUFHRjtBQUFBO0lBRUU7OztFQUdGO0FBQUE7QUFBQTtJQUdFO0lBQ0E7OztFQUdGO0FBQUE7SUFFRTs7O0VBUUY7SUFDRSxNeEU0aEM4Qjs7RXdFMWhDaEM7SUFDRTs7O0VBRUY7SUFDRTs7O0VBSUY7SUFDRTs7O0VBRUY7SUFDRTs7O0VBR0Y7SUFDRTs7RUFFQTtBQUFBO0lBRUU7OztFQUtGO0FBQUE7SUFFRTs7O0VBSUo7SUFDRTs7RUFFQTtBQUFBO0FBQUE7QUFBQTtJQUlFLGN4RXZIRzs7O0V3RTJIUDtJQUNFO0lBQ0EsY3hFN0hLOzs7QXlFVlg7RUFDRTs7O0FBRUY7RUFDRTtFQUNBOzs7QUFFRjtBQUFBO0VBRUU7OztBQUVGO0VBQ0U7RUFDQTs7O0FBRUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVGO0FBQUE7QUFBQTtBQUdBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBRUY7RUFDRTtFQUNBO0VBQ0E7OztBQUVGO0VBQ0U7RUFDQTtFQUNBOzs7QUFFRjtFQUNFO0VBQ0E7RUFDQTs7O0FBRUY7RUFDRTtFQUNBO0VBQ0E7OztBQUVGO0VBQ0U7RUFDQTs7O0FBRUY7RUFDRTtFQUNBOzs7QUFFRjtFQUNFO0VBQ0E7OztBQUVGO0VBQ0U7RUFDQTs7O0FBRUY7RUFDRTtFQUNBO0FBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFFRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUVGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7OztBQUVGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUVGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFDQTtFQUNFO0lBQ0U7SUFDQTs7O0VBRUY7SUFDRTtJQUNBOzs7QUFHSjtFQUNFO0lBQ0U7SUFDQTs7O0VBRUY7SUFDRTtJQUNBOzs7QUFHSjtFQUNFO0lBQ0U7SUFDQTs7O0FDbEpBO0VBQ0ksWTVFMUNvQjs7QTRFK0NwQjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBLE81RWxEZ0I7O0E0RXdEeEI7RUFDSTtFQUNBOztBQUVBO0VBQ0ksTzVFTko7RTRFT0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJLGtCNUVmSjtFNEVnQkksTzVFbEVnQjs7QTRFcUVwQjtFQUNJLFk1RXRFZ0I7O0E0RXlFcEI7QUFBQTtBQUFBO0VBR0ksa0I1RTVFZ0I7O0E0RStFcEI7QUFBQTtFQUVJLGtCNUVqRmdCOztBNEVxRmhCO0VBQ0ksa0I1RXBDUjtFNEVxQ1EsTzVFdkZZOztBNEUwRmhCO0VBQ0ksa0JBdEdxQjtFQXVHckIsTzVFNUZZOztBNEVnR3BCO0VBQ0ksa0I1RS9DSjs7QTRFa0RBO0VBQ0k7RUFDQSxPNUVsSGdCOztBNEVxSHBCO0VBQ0ksa0I1RWhIZ0I7O0E0RXVIcEI7RUFDSSxPNUU5SGdCOztBNEVnSXBCO0VBQ0k7O0FBTVI7RUFDSSxrQjVFMUVBO0U0RTJFQTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7O0FBSUE7RUFDSSxPNUV6SVk7RTRFMElaO0VBQ0E7O0FBRUE7RUFDSSxrQkFsSmdCOztBQXNKeEI7RUFDSSxPNUUvSlk7O0E0RWtLaEI7RUFDSSxPNUU3Slk7O0E0RWdLaEI7RUFDSSxPNUV2S1k7O0E0RTBLaEI7RUFDSSxrQjVFdktZOztBNEV5S1o7RUFDSTs7QUFFQTtFQUNJOztBQUlSO0VBQ0ksTzVFdExROztBNEU2THhCO0VBQ0ksa0I1RWhJQTtFNEVpSUE7O0FBSUE7RUFDSSxPNUV4TGdCOztBNEUwTGhCO0VBQ0ksa0JBbEx1QjtFQW1MdkIsTzVFNUxZOztBNEVnTXBCO0VBQ0ksTzVFN01nQjtFNEU4TWhCLGtCQXhMNEI7O0FBMEw1QjtFQUNJLE81RWpOWTtFNEVrTlosa0JBNUx3Qjs7QUFnTWhDO0VBQ0ksTzVFdk5nQjtFNEV3TmhCLGtCQWxNNEI7O0FBb001QjtFQUNJLE81RTNOWTtFNEU0Tlosa0JBdk11Qjs7QUFtTjNCO0VBQ0ksTzVFN05ZOztBNEVnT2hCO0VBQ0ksTzVFak9ZOztBNEVvT2hCO0VBS0k7RUFDQSxZNUV0UFk7RTRFdVBaLE81RXpMUjs7QTRFbUxRO0VBQ0ksTzVFcExaOztBNEU2TEE7RUFDSTs7QUFHSjtFQUNJOztBQVFKO0VBQ0k7O0FBR0k7RUFDSSxPNUVqUVE7O0E0RW9RWjtFQUtJLFk1RXJSUTs7QTRFaVJSO0VBQ0ksTzVFcE5oQjs7QTRFMk5JO0VBQ0k7O0FBVUo7RUFDSSxPNUUvUlk7RTRFZ1NaOztBQUdKO0VBQ0ksTzVFcFNZO0U0RXFTWjs7QUFHSjtFQUNJO0VBQ0EsTzVFbFBSOztBNEVxUEk7RUFDSSxPNUV4U1k7O0E0RTRTcEI7RUFDSTs7QUFPUjtFQUNJOztBQUdJO0VBQ0ksTzVFL1RZO0U0RWdVWjs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQSxPNUUvVVk7O0E0RXFWeEI7RUFDSSxrQjVFbFZvQjtFNEVtVnBCLE81RXZWb0I7O0E0RTBWeEI7RUFDSSxrQjVFM1ZvQjtFNEU0VnBCLE81RTlSQTs7QTRFaVNKO0VBS0k7RUFDQTs7QUFMQTtFQUNJOztBQVVKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBT0o7RUFDSSxPNUV0WWdCOztBNEV5WXBCO0VBQ0ksTzVFOVhnQjs7QTRFaVlwQjtFQUNJLGtCNUUxWWdCOztBNEU2WXBCO0VBQ0k7O0FBR0o7RUFDSSxPNUUxWWdCO0U0RTJZaEIsa0I1RXpWSjs7QTRFMlZJO0VBQ0ksTzVFOVlZO0U0RStZWjtFQUNBOztBQUdKO0VBQ0ksTzVFaGFZOztBNEVtYWhCO0VBQ0ksa0I1RWhhWTs7QTRFb2FoQjtFQUNJOztBQU1KO0VBQ0ksTzVFaGJZOztBNEVtYmhCO0VBQ0k7O0FBSVI7RUFDSTs7QUFLUjtFQUVJLFk1RWhjb0I7RTRFaWNwQixPNUVuWUE7O0E0RXFZQTtFQUNFLE81RXRZRjtFNEV1WUU7O0FBS047RXZEbFpGLE9yQnhEMEI7RXFCeUQxQixjckJ6RDBCOztBR0kxQjtFa0J3REUsT0FMZ0Q7RUFNaEQsa0JyQjdEd0I7RXFCOER4QixjckI5RHdCOztBcUJpRTFCO0VBRUU7O0FBR0Y7RUFFRSxPckJ4RXdCO0VxQnlFeEI7O0FBR0Y7RUFHRTtFQUNBLGtCckJoRndCO0VxQmlGeEIsY3JCakZ3Qjs7QXFCbUZ4QjtFQUtJOztBdUR1WEo7RUFDSTs7QUFJSjtFQUNJLE81RXpjb0I7O0E0RTJjcEI7RUFDSSxZNUVyZGdCO0U0RXNkaEIsTzVFN2NnQjs7QTRFK2NoQjtFQUNJLFk1RXhkWTtFNEV5ZFosTzVFamRZOztBNEVtZFo7RUFDSSxZNUUzZFE7RTRFNGRSLE81RXJkUTs7QTRFeWRoQjtFQUNJLFk1RWplWTtFNEVrZVosTzVFM2RZOztBNEVnZWhCO0VBQ0ksWTVFN2VZO0U0RThlWixPNUVoYlI7O0E0RW1iWTtFQUNJLFk1RWxmSTs7QTRFcWZSO0VBQ0ksTzVFeGJoQjs7QTRFb2NJO0VBR0k7O0FBSVI7RUFDSTtFQUNBLE81RTdjSjs7QTRFZ2RBO0VBQ0k7RUFDQSxPNUVsZEo7O0E0RTBkQTtFQUNJOztBQUlBO0VBQ0k7O0FBU1I7RUFDSSxPNUU1aEJnQjs7QTRFaWlCaEI7RUFDSSxPNUVsaUJZOztBNEVxaUJoQjtFQUNJLGtCNUVsakJZO0U0RW1qQlosYzVFbmpCWTtFNEVvakJaLE81RXRmUjs7QTRFMGZBO0VBQ0ksTzVFempCZ0I7O0E0RTZqQnhCO0VBQ0ksTzVFbGpCb0I7O0E0RXVqQnBCO0VBQ0k7O0FBRUo7RUFDSSxPNUUzakJnQjs7QTRFOGpCcEI7RUFDSSxPNUUvakJnQjs7QTRFbWtCeEI7RUFDSTtJQUNJO0lBQ0E7Ozs7QUN2bEJaO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSSxrQjdFR3dCO0U2RUZ4QixhN0VxSTRCO0U2RXBJNUIsTzdFcUk0QjtFNkVuSTVCOztBQUVBO0VBQ0k7OztBQUlSO0VBQ0ksTzdFRHdCO0U2RUV4Qjs7O0FBR0o7RUFDSSxPN0VMd0I7O0E2RU94QjtFQUNJO0VBQ0E7RUFDQTs7O0FBS1I7RUFDSTtFQUNBO0VBQ0EsTzdFbkJ3QjtFNkVvQnhCO0VBQ0E7OztBQUdKO0VBQ0ksa0I3RXpCd0I7RTZFMEJ4QixPN0V0Q3dCOzs7QTZFeUM1QjtFQUNJOzs7QUFHSjtFQUFXOzs7QUFFWDtFQUNJOzs7QUFHSjtFQUNJO0lBQUs7OztBQUdUO0VBQ0k7OztBQUdKO0VBQ0ksWTdFeER3QjtFNkV5RHhCO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPN0U3RHdCO0U2RThEeEI7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsWTdFN0V3QjtFNkU4RXhCO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0ksTzdFdkZvQjs7QTZFMEZ4QjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzdFL0ZvQjs7O0E2RW1HNUI7RUFDSTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0EsTzdFeERJOzs7QThFdEVSO0VBQ0ksa0I5RU93QjtFOEVOeEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0ksWTlFYXdCO0U4RVp4QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtBQUFBO0VBRUk7RUFDQTs7O0FBR0o7RUFDSSxrQjlFRUk7RThFREo7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSSxPOUV0RG9COzs7QThFMEQ1QjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUlSO0VBQ0k7OztBQUtKO0VBRUk7SUFDSTs7O0VBR0o7SUFDSTtJQUNBOzs7RUFHSjtJQUNJOzs7RUFHSjtJQUNJOzs7RUFHSjtBQUFBO0lBRUk7SUFDQTs7O0VBR0o7SUFDSTs7O0FDMUlKO0VBQ0k7O0FBRUE7RUFDSTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPL0VEZ0I7O0ErRUlwQjtFQUNJO0VBQ0EsTy9FWmdCO0UrRWFoQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFLUjtFQUNJLGtCL0U1Qm9CO0UrRTZCcEI7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxrQi9FekNnQjs7QStFNENwQjtFQUNJOztBQUdKO0VBQ0k7OztBQ3pEWjtFQUNJOzs7QUFHSjtFQUNJLGtCaEZld0I7RWdGZHhCO0VBQ0EsT2hGK0RJO0VnRjlESjtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUdJLE9oRnNEQTs7O0FnRmxEUjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUVKO0VBQ0ksT2hGeUU0Qjs7QWdGdEVoQztFQUNJLGtCaEZyQmdCO0VnRnNCaEI7RUFDQSxPaEYyQko7RWdGMUJJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0ksa0JoRm9ENEI7RWdGbkQ1QixPaEZrQko7O0FnRmJKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJLGtCaEZqRG9COztBZ0ZtRHBCO0VBQ0k7RUFDQTs7QUFHSjtFQUNJOztBQUVKO0VBQ0k7O0FBSVA7RUFDRzs7QUFFQTtFQUNJO0VBQ0EsT2hGakZnQjtFZ0ZrRmhCO0VBQ0E7OztBQUtaO0VBRUk7SUFDSTtJQUNBOzs7RUFHSjtJQUNJOztFQUVBO0lBQ0k7SUFDQTs7O0FDNUdaO0VBQ0k7RUFDQTtFQUNBOztBQUlJO0VBQ0k7O0FBRUE7RUFDSTtFQUNBOztBQUVBO0VBQ0k7O0FBSVo7RUFDSSxPakZrREo7RWlGakRJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSSxrQmpGbUZ3Qjs7QWlGaEZoQztFQUNJO0VBQ0EsT2pGNkU0Qjs7QWlGdEV4QjtFQUNJLE9qRmpDUTs7QWlGbUNSO0VBQ0k7O0FBS2hCO0VBQ0ksa0JqRmtFNEI7RWlGakU1Qjs7QUFDQTtFQUNROztBQUVKO0VBQ0k7O0FBSVI7RUFDSSxPakZyRFk7OztBa0ZSNUI7RUFDSTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7OztBQU1aO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsT2xGbkJ3QjtFa0ZvQnhCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0ksT2xGN0JvQjs7O0FtRmI1QjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9uRklvQjtFbUZIcEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT25GWm9CO0VtRmFwQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPbkY1Qm9CO0VtRjZCcEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT25GbkVnQjs7QW1Gc0VwQjtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7O0FDckdaO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7OztBQ3BEUjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlyRjJDSTtFcUYxQ0o7O0FBR0o7RUFDSTtFQUNBOzs7QUN4QlI7RUFDSTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT3RGVGdCOztBc0ZZcEI7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJOzs7QUNyQ1I7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFl2RnlEQTtFdUZ4REE7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZdkZib0I7RXVGY3BCO0VBQ0E7O0FBR0o7RUFDSSxZdkZ2Qm9COztBdUYwQnhCO0VBQ0k7RUFDQTtFQUNBLFl2Ri9Cb0I7O0F1RmtDeEI7RUFDSTs7O0FDckNSO0VBQ0U7SUFDRTtJQUNBOztFQUVGO0lBQ0U7SUFDQTs7RUFFRjtJQUNFOzs7QUFZSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBOztBQXJCQTtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQXNCRjtFQ3hDRjtFRDJDTTtFQUNBO0VBQ0E7RUFDQSxPQS9DRDtFQWdEQyxRQWhERDtFQWlEQztFQUNBO0VBQ0E7OztBRXZEUjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQSxPMUZEb0I7RTBGRXBCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FDbERSO0VBQ0k7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBT0Y7RUFDRSxZQUhNO0VBSU47RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRSxjQVhNOztBQWVWO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUMxR047RUFNSSxhNUZ5STRCOztBNEY5STVCO0VBQ0k7RUFDQTs7O0FBT1I7RUFDSTs7O0FBR0o7RUFDSTtFQUNBLGtCNUZzREk7O0E0RnBESjtFQUNJLGtCNUZQb0I7OztBNEZXNUI7RUFDSTtFQUNBLGtCNUY2Q0k7O0E0RjNDSjtFQUNJLGtCNUZoQm9COzs7QTRGb0I1QjtFdkUxQkU7RUZBRSxrQm5CRXdCO0VxQkExQjs7QWxCSUE7RWtCQUU7RUZOQSxrQkVEMkQ7RUFTM0QsY0FUcUc7O0FBWXZHO0VBRUU7RUZiQSxrQkVEMkQ7RUFnQjNELGNBaEJxRztFQXFCbkc7O0FBS0o7RUFFRTtFQUNBLGtCckIxQndCO0VxQjJCeEIsY3JCM0J3Qjs7QXFCa0MxQjtFQUdFO0VBQ0Esa0JBekMrSTtFQTZDL0ksY0E3Q3lMOztBQStDekw7RUFLSTs7O0F1RXBCUjtFdkUyQkUsT3JCeEQwQjtFcUJ5RDFCLGNyQnpEMEI7O0FHSTFCO0VrQndERSxPQUxnRDtFQU1oRCxrQnJCN0R3QjtFcUI4RHhCLGNyQjlEd0I7O0FxQmlFMUI7RUFFRTs7QUFHRjtFQUVFLE9yQnhFd0I7RXFCeUV4Qjs7QUFHRjtFQUdFO0VBQ0Esa0JyQmhGd0I7RXFCaUZ4QixjckJqRndCOztBcUJtRnhCO0VBS0k7OztBdUV2RFI7RXZFbkNFO0VGQUUsa0JuQkd3QjtFcUJEMUIsY3JCQzBCOztBR0cxQjtFa0JBRTtFRk5BLGtCRUQyRDtFQVMzRCxjQVRxRzs7QUFZdkc7RUFFRTtFRmJBLGtCRUQyRDtFQWdCM0QsY0FoQnFHO0VBcUJuRzs7QUFLSjtFQUVFO0VBQ0Esa0JyQnpCd0I7RXFCMEJ4QixjckIxQndCOztBcUJpQzFCO0VBR0U7RUFDQSxrQkF6QytJO0VBNkMvSSxjQTdDeUw7O0FBK0N6TDtFQUtJOzs7QXVFVlI7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7O0FBS1I7RUFDSTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFLSjtFQUNJOzs7QUFLSjtFQUNJLE81RmRJOztBNEZnQko7RUFDSSxPNUZqQkE7OztBNEZ3Qko7RUFDSTtFQUNBOztBQUVKO0VBQ0k7RUFDQTs7O0FBSUo7RUFDSTtFQUNBOztBQUVKO0VBQ0k7RUFDQTs7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTs7O0FBSVI7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBLFk1RmpJd0I7RTRGa0l4Qjs7QUFFQTtFQUNJOzs7QUFJUjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0EsTzVGL0l3QjtFNEZnSnhCOztBQUVBO0VBQ0ksTzVGbkpvQjs7O0E0RnVKNUI7RUFDSTtFQUNBLE81RnpKd0I7OztBNkZSNUI7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FDSEY7RUFDSTtFQUNBO0VBQ0EsWTlGdURLOztBOEZyREw7RUFHSTtFQUNBOztBM0NUTjtFQUNFO0VBQ0E7RUFDQTs7QTJDUUk7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQSxXOUY0SG9COztBOEZ6SHhCO0VBQ0k7RUFDQTs7QUFHSjtFQUNJLGtCOUZUZ0I7RThGVWhCLE85Rm1DSjs7QThGaENBO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBS1I7RUFDSTs7QUFHSjtFQUNJLFc5RitGd0I7RThGOUZ4QjtFQUNBOztBQUdKO0VBQ0ksa0I5RlNBOztBOEZOSjtFQUNJOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBWUo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDSSxPOUZ2Qko7OztBOEYrQlI7RUFFSTtJQUVJOzs7QUN2R1I7RUFDSTs7O0FBS0E7RUFDSSxrQi9GZ0JvQjtFK0ZmcEIsTy9GRm9COztBK0ZJcEI7RUFDSSxrQi9GWWdCO0UrRlhoQixPL0ZOZ0I7O0ErRlV4QjtFQUNJOztBQUdKO0VBQ0k7OztBQU1KO0VBQ0ksa0IvRnRCb0I7RStGdUJwQixPL0Z1Q0E7O0ErRnJDQTtFQUNJLGtCL0YxQmdCO0UrRjJCaEIsTy9GbUNKOztBK0YvQko7RUFDSTs7QUFHSjtFQUNJOzs7QUFNSjtFQUNJO0VBQ0E7RUFDQTtFQUNBLE8vRmpDb0I7O0ErRm1DcEI7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBLE8vRjVDZ0I7O0ErRjhDaEI7RUFDSTtFQUNBLGMvRjVEWTtFK0Y2RFosTy9GakRZOzs7QW1EbkIxQjtFQUNFO0VBQ0E7RUFDQTs7QTRDNEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0Esa0IvRjVCSjtFK0Y2Qkk7RUFDQSxvQi9GM0VnQjs7QStGNkVoQjtFQUNJLGtCL0ZqQ1I7RStGa0NRLGMvRi9FWTs7QStGa0ZoQjtFQUNJLGtCL0ZuRlk7RStGb0ZaLE8vRnJHWTs7QStGdUdaO0VBQ0ksa0IvRnZGUTtFK0Z3RlIsTy9GekdROztBK0YrR3hCO0VBQ0k7O0FBRUE7RUFDSSxvQi9GbkhnQjs7QStGcUhoQjtFQUNJLGtCL0Z4RFI7RStGeURRLGMvRnZIWTs7QStGMEhoQjtFQUNJLGtCL0YzSFk7RStGNEhaLE8vRjlEUjs7QStGZ0VRO0VBQ0ksa0IvRi9IUTtFK0ZnSVIsTy9GbEVaOztBK0Z3RUo7RUFDSTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQSxPL0Z4SVk7RStGeUlaO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7OztBQU1oQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7O0FBSVI7RUFDSTs7O0FDL0xKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQSxPaEdDd0I7RWdHQXhCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJLE9oR1JvQjs7QWdHV3hCO0VBQ0k7RUFDQSxZaEdib0I7RWdHY3BCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBLFloRzVDb0I7RWdHNkNwQjtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBLFloR3ZEb0I7RWdHd0RwQjtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNJO0VBQ0E7OztBQ3ZFSjtBQUFBO0VBRUksT2pHZ0JvQjtFaUdmcEI7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUlKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9qR0ZvQjtFaUdHcEI7O0FBR0o7RUFDSTs7QUFHQTtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUtSO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7O0FBQ0E7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBS1o7RUFDSTtFQUNBOztBQUtBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOzs7QUFLWjtFQUNJOztBQUVBO0VBQ0k7OztBQU1SO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQSxjakc3SXdCOzs7QWlHZ0o1QjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtBQUFBO0VBRUk7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0VBSUk7RUFDQTs7O0FBSUo7QUFBQTtFQUVJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFLSjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBS1I7RUFDSTs7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBLE9qRzVQb0I7RWlHNlBwQjs7QUFFQTtFQUNJOztBQU1KO0VBQ0k7O0FBS1I7RUFDSTs7O0FBS1I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJLFlqR3hSd0I7RWlHeVJ4QixPakc1UXdCO0VpRzZReEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtJQUNJO0lBQ0EsT2pHOVJvQjtJaUcrUnBCOzs7RUFHSjtJQUNJOzs7RUFLQTtJQUNJO0lBQ0E7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFHSjtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOztFQUdKO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7O0VBR0o7SUFDSTs7RUFFSjtJQUNJOztFQUlQO0lBQ0c7O0VBR0o7SUFDSTtJQUNBOzs7QUNuWVo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0o7QUFBQTtBQUFBO0VBR0k7RUFDQSxrQmxHb0NJO0VrR25DSjtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtBQUFBO0VBRUk7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUNsRUo7RUFDSTs7O0FBR0o7RUFDSTs7O0FDRko7RUFDSTtFQUNBO0VBQ0E7OztBQUtBO0VBQ0k7O0FBR0o7RUFDSTs7O0FBT0o7RUFDSTs7O0FBT0o7RUFDSTs7QUFHSjtFQUNJOzs7QUFLUjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBOzs7QUFJUjtFQUNJOzs7QUFHSjtFQUlRO0lBQ0k7SUFDQTs7RUFHSjtJQUNJOzs7QUN2RVo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0Esa0JyR3NJOEI7RXFHckk5QixtQnJHcUk4QjtFcUdwSTlCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtJQUFLO0lBQWlDOztFQUN0QztJQUFPO0lBQW1DOzs7QUFHNUM7RUFDRTtJQUFLO0lBQThCOztFQUNuQztJQUFPO0lBQWdDOzs7QUFHekM7RUFDRTtJQUFLO0lBQTRCOztFQUNqQztJQUFPO0lBQThCOzs7QUFHdkM7RUFDRTtJQUFLO0lBQTZCOztFQUNsQztJQUFPO0lBQStCOzs7QUFHeEM7RUFDRTtJQUFLO0lBQXlCOztFQUM5QjtJQUFPO0lBQTJCOzs7QUM1RWhDO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7QUFBQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7OztBQUlSO0VBQ0k7RUFDQTtFQUNBOzs7QUFHSjtFQUNJOzs7QUFTQTtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFJSTtFQUNBO0VBQ0E7O0FBTEE7RUFDSTs7QUFRWjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFZQTtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUVIO0VBQ0c7O0FBRUo7RUFDSTs7QUFJUjtFQUNJOzs7QUFPUjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7O0FBSVI7RUFDSTtFQUNBOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFPUjtFQUNJOztBQUlJO0VBS0k7RUFDQTs7QUFMQTtFQUNJOztBQVFaO0VBQ0k7RUFDQTs7O0FBU0o7RUFDSTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7O0FBR0o7RUFDSTs7QUFDQTtFQUNJO0VBQ0E7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBS1o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQU9SO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBS1o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdSO0VBQ0k7OztBQ2pWSjtFQUNJOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE92R29EQTtFdUduREE7RUFDQTtFQUNBLGtCdkdEb0I7RXVHRXBCO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE92R3RCZ0I7RXVHdUJoQjtFQUNBOztBQUVBO0VBQ0ksa0J2R25DWTs7QXVHc0NoQjtFQUNJLE92RzNDWTs7QXVHOENoQjtFQUNJLE92R3pDWTtFdUcwQ1o7O0FBSVI7RUFDSTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUtKO0VBQ0ksT3ZHN0VZOztBdUdnRmhCO0VBQ0k7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7O0FBSVI7RUFDSTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFNSjtFQUNJLE92R3hHb0I7RXVHeUdwQixrQnZHdkRBO0V1R3dEQTs7QUFFQTtFQUNJLE92RzdHZ0I7O0F1R2dIcEI7RUFDSSxPdkdqSGdCO0V1R2tIaEI7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUtKO0VBQ0ksT3ZHaElnQjtFdUdpSWhCOztBQUdKO0VBQ0k7O0FBSVI7RUFDSTs7O0FBTUo7RUFDSTtFQUNBO0VBQ0E7RUFDQSxPdkcvSW9COzs7QXVHbUo1QjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJLE92RzFLb0I7RXVHMktwQjtFQUNBOzs7QUNoTEE7RUFHSTs7QUFJUjtFQUNJOztBQUdKO0VBQ0k7OztBQ2hCUjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtBQUFBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtBQUFBO0VBRUk7RUFDQTs7O0FBR0o7QUFBQTtFQUVJOzs7QUFHSjtBQUFBO0FBQUE7RUFHSTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7QUFBQTtBQUFBO0VBR0k7RUFDQTs7O0FBR0o7RUFDSTs7O0FBRUo7QUFBQTtBQUFBO0VBR0k7RUFDQTs7O0FBR0o7QUFBQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTs7O0FBR0o7RUFDSSxPekdySHdCOzs7QXlHd0g1QjtBQUFBO0VBRUk7OztBQUVKO0FBQUE7RUFFSTs7O0FBRUo7QUFBQTtFQUVJO0VBQ0E7OztBQUVKO0VBQ0k7RUFDQTs7O0FBRUo7RUFDSTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7OztBQUVKO0FBQUE7RUFFSTs7O0FBRUo7QUFBQTtFQUVJOzs7QUFFSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFFSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVKO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsT3pHbE93QjtFeUdtT3hCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVKO0VBQ0ksT3pHM093QjtFeUc0T3hCO0VBQ0E7RUFDQTs7O0FBRUo7RUFDSTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUVKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFFSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFFSjtFQUNJOzs7QUFFSjtFQUNJOzs7QUFFSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFFSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFFSjtFQUNJO0VBQ0E7RUFDQTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7OztBQUVKO0VBQ0k7RUFDQTtFQUNBOzs7QUFFSjtFQUNJO0VBQ0E7OztBQUVKO0VBQ0k7RUFDQTs7O0FBRUo7RUFDSTtFQUNBO0VBQ0E7OztBQUdKO0FBQUE7RUFFSSxZekc3VXdCO0V5RzhVeEIsT3pHN1V3Qjs7O0F5R2dWNUI7RUFDSSxZekdsVndCO0V5R21WeEIsT3pHbFZ3Qjs7O0F5R3FWNUI7QUFBQTtFQUVJLFl6R3hWd0I7RXlHeVZ4QixPekd4VndCOzs7QXlHMlY1QjtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7O0FBR0o7QUFBQTtFQUVJOzs7QUFHSjtBQUFBO0VBRUk7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7OztBQUdKO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTs7O0FBR0o7RUFDSTtFQUNBOzs7QUFHSjtFQUNJO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTs7O0FBR0o7RUFDSTtJQUNJOztFQUVKO0lBQ0k7OztBQU1KO0VBQ0ksWXpHamNvQjtFeUdrY3BCLE96R3Rib0I7RXlHdWJwQjs7QUFFQTtFQUNJLFl6R2xjZ0I7RXlHbWNoQixPekczYmdCO0V5RzRiaEI7RUFDQTs7QUFFQTtFQUNJLFl6R2hjWTtFeUdpY1osT3pHL1lSOztBeUdtWkE7RUFDSSxZekd0Y2dCO0V5R3VjaEIsT3pHclpKOztBeUd5Wko7RUFDSTtFQUNBLFl6R3Jkb0I7O0F5R3dkeEI7RUFDSSxZekc3ZG9CO0V5RzhkcEIsT3pHbGRvQjs7QXlHcWRoQjtFQUNJLFl6R2xlWTs7QXlHcWVoQjtFQUNJLE96RzFkWTs7QXlHK2R4QjtFQUNJO0VBQ0E7OztBQ2xmSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTs7QUFFQTtFQUNJLE8xR0pZO0UwR0taO0VBQ0E7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7RUFDQSxPMUdkZ0I7RTBHZWhCOztBQUVBO0VBQ0k7O0FBS1o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQSxZMUd6Q2dCO0UwRzBDaEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE8xR09KOztBMEdKQTtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsTzFHcEVZO0UwR3FFWjtFQUNBOztBQUlSO0VBQ0k7O0FBR0o7RUFDSSxZMUdsRmdCO0UwR21GaEI7OztBQzVGUjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBLE8zR0pnQjtFMkdLaEI7O0FBRUE7RUFDSTs7QUFNWjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUlSO0VBQ0k7O0FBR0o7RUFDSSxZM0doRGdCOzs7QTRHVHhCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0EsTzVHTG9CO0U0R01wQjs7QUFFQTtFQUNJOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlSO0VBQ0k7O0FBR0o7RUFDSSxZNUc5Q2dCO0U0RytDaEI7O0FBR0o7RUFDSSxZNUduRGdCO0U0R29EaEI7RUFDQTtFQUNBO0VBQ0E7OztBQ2xFWjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQSxPN0doQm9COztBNkdtQnhCO0VBQ0k7RUFDQTtFQUNBLE83R3RCb0I7RTZHdUJwQjs7QUFHSjtFQUNJO0VBQ0E7RUFDQSxPN0c0QkE7RTZHM0JBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlBO0VBQ0k7OztBQU1aO0VBQ0k7RUFDQTs7QUFDQTtFQUNJOztBQUdKO0VBQ0U7SUFDRTs7RUFFRjtJQUNFOzs7O0FDL0VKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFFQSxPOUdPb0I7O0E4R0p4QjtFQUNJO0VBQ0E7RUFDQTs7O0FBS1I7RUFJUTtJQUNJOztFQUVBO0lBQ0k7OztBQ2xDWjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBRUEsTy9HT29COztBK0dKeEI7RUFDSTtFQUNBO0VBQ0E7OztBQUtSO0VBSVE7SUFDSTs7RUFFQTtJQUNJOzs7QUNsQ1o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0EsT2hIT29COztBZ0hKeEI7RUFDSTtFQUNBO0VBQ0E7OztBQUtSO0VBSVE7SUFDSTs7RUFFQTtJQUNJOzs7QUNuQ2hCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlqSGxCZ0I7O0FpSHFCcEI7RUFDSTtFQUNBO0VBQ0E7O0FBSVI7RUFDSTtFQUNBLFlqSHdCSTtFaUh2Qko7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBTVI7RUFHUTtJQUNJO0lBQ0E7SUFDQTs7O0FDNUVaO0VBQ0k7OztBQUtBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBLE9sSEdvQjs7O0FrSEc1QjtFQUVJO0lBa0JJOztFQWhCQTtJQUNJOztFQUVBO0lBQ0k7O0VBS1I7SUFDSTtJQUNBO0lBQ0E7SUFDQTs7O0FDMUNSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsT25IaEJvQjtFbUhpQnBCO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOzs7QUFLWjtFQUlRO0lBQ0k7O0VBRUE7SUFDSTs7O0FDL0NaO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQSxPcEhRb0I7RW9IUHBCOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBSVI7RUFDSTtFQUNBOzs7QUFNUjtFQUlRO0lBQ0k7O0VBRUE7SUFDSTs7RUFHSjtJQUNJOzs7QUNoRFo7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0EsT3JIT29COztBcUhKeEI7RUFDSTtFQUNBO0VBQ0E7OztBQUtSO0VBSVE7SUFDSTs7RUFFQTtJQUNJOzs7QUNsQ1o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0EsT3RIT29COzs7QXNIRjVCO0VBTVk7SUFDSTs7O0FDbkJKO0VBQ0k7OztBQVNoQjtFQUNJLGtCdkhpREk7RXVIaERKLFl2SHFDSztFdUhwQ0w7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSSxPdkh4Qm9CO0V1SHlCcEI7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSSxPdkgxQm9CO0V1SDJCcEI7RUFDQTtFQUNBOztBQUdKO0VBR0k7RUFDQSxrQnZIN0NvQjs7O0F1SGlENUI7RUFDSTtFQUNBOzs7QUFFSjtFQUNJOzs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7OztBQUlSO0VBQ0k7O0FBRUE7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLWjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQU9aO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQSxrQnZINUpvQjs7QXVIK0p4QjtFQUNJO0VBQ0E7OztBQUlSO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBOzs7QUFJUjtFQUNJO0lBQ0k7O0VBRUE7SUFDSTtJQUNBOztFQUdKO0lBQ0k7SUFDQTtJQUNBOzs7RUFJUjtJQUNJOzs7QUFJUjtFQUNJO0lBQ0k7O0VBRUE7SUFDSTtJQUNBO0lBQ0E7O0VBR0o7SUFDSTtJQUNBO0lBQ0E7OztFQUlSO0lBQ0k7O0VBRUE7SUFDSTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOztFQUdKO0lBQ0k7O0VBRUo7SUFDSTtJQUNBO0lBQ0E7OztBQU9oQjtFQUVJO0lBR0k7SUFDQTs7O0VBR0o7SUFFSTs7RUFFQTtJQUNJOzs7RUFJUjtJQUVJOztFQUVBO0lBQ0k7SUFDQTtJQUNBOzs7RUFJUjtJQUNJO0lBQ0E7OztFQUdKO0lBQ0k7SUFDQTs7O0VBRUo7SUFDSTtJQUNBOzs7RUFPSTtJQUNJO0lBQ0E7SUFDQTs7RUFHSjtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBR0o7SUFDSTs7RUFFSjtJQUNJO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOzs7RUFNaEI7SUFFSTs7O0FBT0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7O0FBR1I7RUFHUTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFNSjtJQUNJOzs7RUFRQTtJQUNJOztFQUtKO0lBQ0k7SUFDQTs7O0FDelhoQjtFQUNJO0VBQ0Esa0J4SE13Qjs7QXdISnhCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0ksT3hIcURBO0V3SHBEQTtFQUNBO0VBQ0E7O0FBTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUNBO0VBQ0k7O0FBSVI7RUFDSSxPeEgxQ2dCOztBd0g0Q2hCO0VBQ0k7O0FBSVI7RUFDSSxrQnhIbERnQjtFd0htRGhCOztBQUVBO0VBQ0k7O0FBS1o7RUFDSTs7QUFFQTtFQUNJOztBQU1BO0VBQ0k7O0FBSUo7RUFFSTs7QUFHSjtFQUNJOztBQU1aO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7QUFBQTtFQUVJLE94SC9DSjs7QXdIbURKO0VBQ0k7O0FBQ0E7RUFDSTtFQUNBOztBQUlSO0VBQ0k7SUFDSTs7RUFJQTtJQUNJO0lBQ0E7OztBQUtaO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE94SHpJZ0I7O0F3SDRJcEI7RUFDSTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7OztBQzVKWjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7O0FBR0o7RUFDSSxPekhoQ2dCO0V5SGlDaEI7RUFDQTtFQUNBO0VBQ0E7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7O0FBSVI7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQSxPekg1Rm9CO0V5SDZGcEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJLE96SDNHb0I7O0F5SDZHcEI7RUFDSTs7QUFJUjtFQUNJOztBQUdKO0VBRUk7SUFDSTs7RUFHSjtJQUVJOztFQUdKO0lBQ0k7SUFDQTs7RUFHSjtJQUNJOzs7QUFLUjtFQUVJO0lBQ0k7SUFDQTs7RUFHSjtJQUNHOztFQUdIO0lBQ0k7SUFDQTs7RUFHSjtJQUNJO0lBQ0E7OztBQU1SO0VBRUk7SUFDSTs7RUFHSjtJQUNJO0lBQ0E7SUFDQTtJQUNBOztFQUdKO0lBQ0k7Ozs7QUN6TFo7RUFFSSxZMUhzQndCOztBMEhwQnhCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPMUh5REE7RTBIeERBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBLE8xSFpvQjtFMEhhcEI7O0FBR0o7RUFDSTtFQUNBLE8xSDRDQTtFMEgzQ0E7OztBQUtSO0VBQ0ksa0IxSHpCd0I7RTBIMEJ4QixPMUhUd0I7O0EwSFd4QjtFQUNJOzs7QUNuQ0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFBMEI7O0FBRzlCO0VBR1E7SUFDSTtJQUNBOztFQUVBO0lBQ0k7O0VBUVI7SUFDSTs7OztBQzVCaEI7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE81SEtzQjs7QTRISHRCO0VBQ0U7RUFDQSxPNUhOb0I7RTRIT3BCOztBQUlKO0VBQ0UsTzVIWHNCO0U0SFl0QjtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFFQTtFQUNFOztBQU1KO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQSxPNUhqRG9CO0U0SGtEcEI7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUtGO0VBQ0U7O0FBS0Y7RUFDRTs7QUFNRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsWTVIL0VzQjtFNEhnRnRCLE81SGpGc0I7O0E0SHNGeEI7RUFDRTtFQUNBOztBQUtGO0VBQ0U7RUFDQTs7QUFLRjtBQUFBO0VBRUU7RUFDQTtFQUNBLGtCNUhqR3NCO0U0SGtHdEI7RUFDQTtFQUNBOztBQUdGO0VBQ0Usa0I1SHZHc0I7O0E0SDBHeEI7RUFDRTtFQUNBLE81SHRIc0I7O0E0SHlIeEI7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBS047RUFDRSxXNUhOMEI7RTRITzFCO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBLE81SHhKb0I7RTRIeUpwQjs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBLE81SDlKb0I7O0E0SGlLdEI7RUFDRTtFQUNBLE81SDdKb0I7O0E0SGdLdEI7RUFDRTtFQUNBLE81SDFLb0I7O0E0SDZLdEI7RUFDRTtFQUNBLE81SDlLb0I7O0E0SG1MMUI7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPNUgvTndCOztBNEhrTzFCO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFJSjtFQUdNO0lBQ0U7O0VBR0Y7SUFDRTs7RUFHRjtJQUNFOztFQUtGO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7O0VBS0Y7SUFDRTtJQUNBOztFQU9FO0lBQ0U7SUFDQTs7RUFNUjtJQUNFO0lBQ0E7OztBQ2hUTjtFQUNJOztBQUVBO0VBQ0k7O0FBRUE7RUFDSTtFQUNBOztBQUtBO0VBQ0k7O0FBTUo7RUFDSTs7QUFNWjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7O0FBS1I7RUFDSTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBLE83SDFDZ0I7RTZIMkNoQjs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFLWjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzdIaEZnQjtFNkhpRmhCO0VBQ0E7O0FBSVI7RUFDSTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0EsWTdIbEdZO0U2SG1HWjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFLWjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzdIaElZO0U2SGlJWjs7QUFLWjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFNSjtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPN0huTlE7RTZIb05SO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFk3SHhQUTtFNkh5UFI7RUFDQTs7QUFHSjtFQUNJLE83SDVQUTtFNkg2UFI7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7QUFBQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0ksTzdIL1FRO0U2SGdSUjtFQUNBO0VBQ0E7O0FBR0o7RUFDSSxPN0gxUVE7O0E2SGlSeEI7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7O0FBSVI7RUFDSTs7QUFJQTtBQUFBO0FBQUE7RUFHSTtFQUNBO0VBQ0E7O0FBSUo7RUFDSTs7QUFHSjtBQUFBO0VBRUk7RUFDQTtFQUNBOztBQUdIO0VBRUc7RUFDQTtFQUNBOztBQUVGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0EsWTdIdFNBO0U2SHVTQTs7QUFHSjtFQUNFO0VBQ0E7O0FBSU47RUFDSTtFQUNBO0VBQ0E7RUFDQSxPN0h2V29CO0U2SHdXcEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJLFk3SDVXZ0I7O0E2SDhXcEI7RUFDSTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJLFk3SHpYZ0I7RTZIMFhoQjtFQUNBLE83SG5YZ0I7RTZIb1hoQjs7QUFHSjtFQUNJLE83SDlYZ0I7O0E2SGlZcEI7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPN0g3YVE7O0E2SGdiWjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSSxPN0g5YlE7O0E2SGljWjtFQUNJOztBQUdKO0VBQ0k7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzdIdGRZOztBNkg2ZHBCO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0E7RUFTSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE83SGpmWTs7QTZIc2VaO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsTzdINWVROztBNkh1ZnBCO0VBQ0k7RUFDQTtFQUNBLE83SC9mZ0I7RTZIZ2dCaEI7O0FBSUE7RUFDSSxPN0gvZlk7RTZIZ2dCWjs7QUFLWjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBSVI7RUFDSTtFQUNBOztBQUlKO0VBRUk7SUFDSTs7RUFFQTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBS1I7SUFDSTs7RUFHSjtJQUNJOztFQUdKO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBRUE7SUFDSTs7RUFNSjtJQUNJO0lBQ0E7SUFDQTs7RUFLUjtJQUNJO0lBQ0E7SUFDQTtJQUNBOztFQUVBO0lBQ0k7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTs7OztBQ2ptQmhCO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDRztFQUNBLGtCOUgxQmlCOztBOEg2QnBCO0VBQ0ksa0I5SDlCZ0I7O0E4SG1DaEI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzlIaENZO0U4SGlDWjs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzlIL0NZO0U4SGdEWjs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFPSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPOUgvRFk7O0E4SGtFaEI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzlIL0VZOztBOEhzRnhCO0VBQ0ksTzlIeEZvQjtFOEh5RnBCO0VBQ0E7RUFDQTs7QUFHSjtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJLFk5SDFHZ0I7RThIMkdoQjtFQUNBO0VBQ0EsTzlIM0dnQjtFOEg0R2hCOztBQUtSO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBS0E7RUFDSTtFQUNBO0VBQ0E7O0FBS1I7RUFDSTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUVJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUtSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE85SGxLZ0I7RThIbUtoQjtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQVdJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBU2hCO0VBQ0k7O0FBR0o7RUFDSTs7O0FBS1I7RUFFSTtJQUNJOzs7RUFHSjtJQUNJO0lBQ0E7OztBQ3pPSjtFQUVJO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBQ0E7RUFDSTs7QUFFSjtFQUNJOztBQUlSO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtJQUNJOztFQUdKO0lBQ0k7O0VBR0o7QUFBQTtBQUFBO0FBQUE7SUFJSTtJQUNBOzs7QUFJUjtFQUNJO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBRUE7SUFDSTs7OztBQ25GaEI7RUFDSTs7QUFFQTtFQUNJOztBQUVBO0VBQ0k7RUFDQTs7QUFLQTtFQUNJOztBQU1KO0VBQ0k7O0FBS1o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUtSO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQSxPaEl6Q2dCO0VnSTBDaEI7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBS1o7RUFDSTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9oSS9FZ0I7RWdJZ0ZoQjtFQUNBOztBQUlSO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBLFloSWpHWTtFZ0lrR1o7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBS1o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUVBO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9oSS9IWTtFZ0lnSVo7O0FBS1o7RUFDSTtFQUNBOztBQUVBO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBTUo7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT2hJbE5RO0VnSW1OUjtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZaEl2UFE7RWdJd1BSO0VBQ0E7O0FBR0o7RUFDSSxPaEkzUFE7RWdJNFBSO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0FBQUE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJLE9oSTlRUTtFZ0krUVI7RUFDQTtFQUNBOztBQUdKO0VBQ0ksT2hJelFROztBZ0lnUnhCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJOztBQUlSO0VBQ0k7O0FBSUE7QUFBQTtBQUFBO0VBR0k7RUFDQTtFQUNBOztBQUlKO0VBQ0k7O0FBR0o7QUFBQTtFQUVJO0VBQ0E7RUFDQTs7QUFHSDtFQUVHO0VBQ0E7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBLFloSXJTQTtFZ0lzU0E7O0FBR0o7RUFDRTtFQUNBOztBQUlOO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsT2hJdFdvQjtFZ0l1V3BCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSSxZaEkzV2dCOztBZ0k2V3BCO0VBQ0k7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7O0FBRUE7RUFDSSxZaEl4WGdCO0VnSXlYaEI7RUFDQSxPaElsWGdCO0VnSW1YaEI7O0FBR0o7RUFDSSxPaEk3WGdCOztBZ0lnWXBCO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT2hJNWFROztBZ0krYVo7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0ksT2hJN2JROztBZ0lnY1o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBS1I7RUFDSTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9oSXRkWTs7QWdJNmRwQjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBU0k7RUFDQTtFQUNBO0VBQ0EsT2hJL2VZOztBZ0lxZVo7RUFDSTtFQUNBO0VBQ0E7RUFDQSxPaEkzZVE7O0FnSXFmcEI7RUFDSTtFQUNBO0VBQ0EsT2hJN2ZnQjtFZ0k4ZmhCOztBQUdBO0VBQ0ksT2hJNWZZO0VnSTZmWjs7QUFLWjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUNBO0VBQ0k7O0FBR1I7RUFDSTtFQUNBOztBQUlKO0VBQ0k7SUFDSTs7RUFFQTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBS1I7SUFDSTs7RUFHSjtJQUNJOztFQUdKO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBRUE7SUFDSTs7RUFNSjtJQUNJO0lBQ0E7SUFDQTs7RUFLUjtJQUNJO0lBQ0E7SUFDQTtJQUNBOztFQUVBO0lBQ0k7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTs7OztBQ3psQlo7RUFFSTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBSVI7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFDQTtFQUNJOztBQUVKO0VBQ0k7O0FBSVI7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0lBQ0k7O0VBR0o7SUFDSTs7RUFHSjtBQUFBO0FBQUE7QUFBQTtJQUlJO0lBQ0E7OztBQUlSO0VBQ0k7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOzs7O0FDeEZoQjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUdKO0VBQ0k7RUFDQSxrQmxJMUJnQjs7QWtJNkJwQjtFQUNJLGtCbEk5QmdCOztBa0ltQ2hCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT2xJakZZO0VrSWtGWjs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT2xJL0ZZO0VrSWdHWjs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFNSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPbEkvR1k7O0FrSWtIaEI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT2xJOUhZOztBa0ltSXhCO0VBQ0ksT2xJdElvQjtFa0l1SXBCO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJLFlsSXZKZ0I7RWtJd0poQjtFQUNBO0VBQ0EsT2xJdkpnQjtFa0l3SmhCOztBQUlSO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBS0E7QUFBQTtFQUNJO0VBQ0E7O0FBSVI7RUFDSTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFFQTtFQUNJOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9sSTFNZ0I7RWtJMk1oQjtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQU9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBTWhCO0VBQ0k7O0FBR0o7RUFDSTs7O0FBSVI7RUFDSTtJQUNJOzs7RUFHSjtJQUNJO0lBQ0E7OztBQ3BRSjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUtSO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTs7O0FBTVo7RUFJUTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztFQUVBO0lBQ0k7O0VBS1I7SUFDSTs7RUFHSjtJQUNJOztFQUdKO0lBQ0k7O0VBR0o7SUFDSTtJQUNBOzs7QUMvRFo7RUFJUTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztFQUVBO0lBQ0k7O0VBS1I7SUFDSTs7RUFHSjtJQUNJOzs7QUFPUjtFQUNJOztBQUdKO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7OztBQU1aO0VBSVE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOztFQUtSO0lBQ0k7O0VBR0o7SUFDSTs7O0FSdkVaO0VBQ0U7O0FBRUE7RUFDRTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPNUhLc0I7O0E0SEh0QjtFQUNFO0VBQ0EsTzVITm9CO0U0SE9wQjs7QUFJSjtFQUNFLE81SFhzQjtFNEhZdEI7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFNSjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsTzVIakRvQjtFNEhrRHBCOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFLRjtFQUNFOztBQUtGO0VBQ0U7O0FBTUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFk1SC9Fc0I7RTRIZ0Z0QixPNUhqRnNCOztBNEhzRnhCO0VBQ0U7RUFDQTs7QUFLRjtFQUNFO0VBQ0E7O0FBS0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQSxrQjVIakdzQjtFNEhrR3RCO0VBQ0E7RUFDQTs7QUFHRjtFQUNFLGtCNUh2R3NCOztBNEgwR3hCO0VBQ0U7RUFDQSxPNUh0SHNCOztBNEh5SHhCO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtOO0VBQ0UsVzVITjBCO0U0SE8xQjtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQSxPNUh4Sm9CO0U0SHlKcEI7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQSxPNUg5Sm9COztBNEhpS3RCO0VBQ0U7RUFDQSxPNUg3Sm9COztBNEhnS3RCO0VBQ0U7RUFDQSxPNUgxS29COztBNEg2S3RCO0VBQ0U7RUFDQSxPNUg5S29COztBNEhtTDFCO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTzVIL053Qjs7QTRIa08xQjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBSUo7RUFHTTtJQUNFOztFQUdGO0lBQ0U7O0VBR0Y7SUFDRTs7RUFLRjtJQUNFO0lBQ0E7SUFDQTtJQUNBOztFQUtGO0lBQ0U7SUFDQTs7RUFPRTtJQUNFO0lBQ0E7O0VBTVI7SUFDRTtJQUNBOzs7QVM5U0Y7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9ySXZCb0I7RXFJd0JwQjtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlySXZFZ0I7O0FxSXlFaEI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTWhCO0VBQ0k7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUVJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7O0FBSVI7QUFBQTtFQUVJO0VBQ0E7RUFDQSxrQnJJcElvQjtFcUlxSXBCO0VBQ0E7RUFDQTs7QUFHSjtFQUNJLGtCckkxSW9COzs7QXNJbkJ4QjtFQUNJOztBQUlKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0EsT3RJK0NBOztBc0k1Q0o7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTtFQUNBO0VBQ0EsT3RJaEJvQjs7QXNJbUJ4QjtFQUNJO0VBQ0E7RUFDQTs7O0FBS1I7RUFJUTtJQUNJOztFQUdKO0lBQ0k7O0VBR0o7SUFDSTs7RUFHSjtJQUNJO0lBQ0E7SUFDQTs7RUFHSjtJQUNJO0lBQ0E7SUFDQTs7RUFHSjtJQUNJOztFQUdKO0lBQ0k7O0VBS0E7SUFDSTs7RUFFQTtJQUNJOzs7QUN6RmhCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPdklNb0I7O0F1SUh4QjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBOzs7QUFPWjtFQUlRO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBRUE7SUFDSTs7O0VBU1I7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOztFQUtSO0lBQ0k7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTs7RUFHSjtJQUNJOztFQUdKO0lBQ0k7O0VBR0o7SUFDSTs7O0FIL0daO0VBSVE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOztFQUtSO0lBQ0k7O0VBR0o7SUFDSTs7O0FBT1I7RUFDSTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBOzs7QUFNWjtFQUlRO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0VBRUE7SUFDSTs7RUFLUjtJQUNJOztFQUdKO0lBQ0k7OztBSXZFWjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJO0VBQ0Esa0J4SXpCZ0I7O0F3STRCcEI7RUFDSSxrQnhJN0JnQjs7QXdJa0NoQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPeEkvQlk7RXdJZ0NaOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPeEk5Q1k7RXdJK0NaOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQU9KO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE94STlEWTs7QXdJaUVoQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPeEk5RVk7O0F3SXFGeEI7RUFDSSxPeEl2Rm9CO0V3SXdGcEI7RUFDQTtFQUNBOztBQUdKO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0ksWXhJekdnQjtFd0kwR2hCO0VBQ0E7RUFDQSxPeEkxR2dCO0V3STJHaEI7O0FBS1I7RUFDSTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFLQTtFQUNJO0VBQ0E7RUFDQTs7QUFLUjtFQUNJOztBQUVBO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBRUk7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBS1I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT3hJaktnQjtFd0lrS2hCO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBV0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFTaEI7RUFDSTs7QUFHSjtFQUNJOzs7QUFLUjtFQUVJO0lBQ0k7OztFQUdKO0lBQ0k7SUFDQTs7O0FDeE9KO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUtSO0VBSVE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFQTtJQUNJOztFQUtSO0lBQ0k7O0VBR0o7SUFDSTs7O0FBU1I7RUFDSTs7O0FBSVI7RUFHUTtJQUNJO0lBQ0E7SUFDQTs7O0FDeERaO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQU1KO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7OztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEJvb3RzdHJhcCB2NC40LjEgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFRoZSBCb290c3RyYXAgQXV0aG9yc1xuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUd2l0dGVyLCBJbmMuXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICovXG5cbkBpbXBvcnQgXCJmdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJyb290XCI7XG5AaW1wb3J0IFwicmVib290XCI7XG5AaW1wb3J0IFwidHlwZVwiO1xuQGltcG9ydCBcImltYWdlc1wiO1xuQGltcG9ydCBcImNvZGVcIjtcbkBpbXBvcnQgXCJncmlkXCI7XG5AaW1wb3J0IFwidGFibGVzXCI7XG5AaW1wb3J0IFwiZm9ybXNcIjtcbkBpbXBvcnQgXCJidXR0b25zXCI7XG5AaW1wb3J0IFwidHJhbnNpdGlvbnNcIjtcbkBpbXBvcnQgXCJkcm9wZG93blwiO1xuQGltcG9ydCBcImJ1dHRvbi1ncm91cFwiO1xuQGltcG9ydCBcImlucHV0LWdyb3VwXCI7XG5AaW1wb3J0IFwiY3VzdG9tLWZvcm1zXCI7XG5AaW1wb3J0IFwibmF2XCI7XG5AaW1wb3J0IFwibmF2YmFyXCI7XG5AaW1wb3J0IFwiY2FyZFwiO1xuQGltcG9ydCBcImJyZWFkY3J1bWJcIjtcbkBpbXBvcnQgXCJwYWdpbmF0aW9uXCI7XG5AaW1wb3J0IFwiYmFkZ2VcIjtcbkBpbXBvcnQgXCJqdW1ib3Ryb25cIjtcbkBpbXBvcnQgXCJhbGVydFwiO1xuQGltcG9ydCBcInByb2dyZXNzXCI7XG5AaW1wb3J0IFwibWVkaWFcIjtcbkBpbXBvcnQgXCJsaXN0LWdyb3VwXCI7XG5AaW1wb3J0IFwiY2xvc2VcIjtcbkBpbXBvcnQgXCJ0b2FzdHNcIjtcbkBpbXBvcnQgXCJtb2RhbFwiO1xuQGltcG9ydCBcInRvb2x0aXBcIjtcbkBpbXBvcnQgXCJwb3BvdmVyXCI7XG5AaW1wb3J0IFwiY2Fyb3VzZWxcIjtcbkBpbXBvcnQgXCJzcGlubmVyc1wiO1xuQGltcG9ydCBcInV0aWxpdGllc1wiO1xuQGltcG9ydCBcInByaW50XCI7XG4iLCIvLyBEbyBub3QgZm9yZ2V0IHRvIHVwZGF0ZSBnZXR0aW5nLXN0YXJ0ZWQvdGhlbWluZy5tZCFcbjpyb290IHtcbiAgLy8gQ3VzdG9tIHZhcmlhYmxlIHZhbHVlcyBvbmx5IHN1cHBvcnQgU2Fzc1NjcmlwdCBpbnNpZGUgYCN7fWAuXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRjb2xvcnMge1xuICAgIC0tI3skY29sb3J9OiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAtLSN7JGNvbG9yfTogI3skdmFsdWV9O1xuICB9XG5cbiAgQGVhY2ggJGJwLCAkdmFsdWUgaW4gJGdyaWQtYnJlYWtwb2ludHMge1xuICAgIC0tYnJlYWtwb2ludC0jeyRicH06ICN7JHZhbHVlfTtcbiAgfVxuXG4gIC8vIFVzZSBgaW5zcGVjdGAgZm9yIGxpc3RzIHNvIHRoYXQgcXVvdGVkIGl0ZW1zIGtlZXAgdGhlIHF1b3Rlcy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzIzODMjaXNzdWVjb21tZW50LTMzNjM0OTE3MlxuICAtLWZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktc2Fucy1zZXJpZil9O1xuICAtLWZvbnQtZmFtaWx5LW1vbm9zcGFjZTogI3tpbnNwZWN0KCRmb250LWZhbWlseS1tb25vc3BhY2UpfTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtbm8tdmVuZG9yLXByZWZpeCwgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50LCBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGUsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuLy8gUmVib290XG4vL1xuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxuLy8gc3R5bGVzIHRhcmdldGluZyBpcnJlbGV2YW50IGJyb3dzZXJzIHdoaWxlIGFwcGx5aW5nIG5ldyBzdHlsZXMuXG4vL1xuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xuXG5cbi8vIERvY3VtZW50XG4vL1xuLy8gMS4gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGAgaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cbi8vIDIuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMuXG4vLyAzLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4vLyA0LiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbi8vIDUuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG59XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLy8gMlxuICBsaW5lLWhlaWdodDogMS4xNTsgLy8gM1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKCRibGFjaywgMCk7IC8vIDVcbn1cblxuLy8gU2hpbSBmb3IgXCJuZXdcIiBIVE1MNSBzdHJ1Y3R1cmFsIGVsZW1lbnRzIHRvIGRpc3BsYXkgY29ycmVjdGx5IChJRTEwLCBvbGRlciBicm93c2Vycylcbi8vIFRPRE86IHJlbW92ZSBpbiB2NVxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlclxuYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIEJvZHlcbi8vXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4vLyAyLiBBcyBhIGJlc3QgcHJhY3RpY2UsIGFwcGx5IGEgZGVmYXVsdCBgYmFja2dyb3VuZC1jb2xvcmAuXG4vLyAzLiBTZXQgYW4gZXhwbGljaXQgaW5pdGlhbCB0ZXh0LWFsaWduIHZhbHVlIHNvIHRoYXQgd2UgY2FuIGxhdGVyIHVzZVxuLy8gICAgdGhlIGBpbmhlcml0YCB2YWx1ZSBvbiB0aGluZ3MgbGlrZSBgPHRoPmAgZWxlbWVudHMuXG5cbmJvZHkge1xuICBtYXJnaW46IDA7IC8vIDFcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1iYXNlO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gM1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1iZzsgLy8gMlxufVxuXG4vLyBGdXR1cmUtcHJvb2YgcnVsZTogaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IDpmb2N1cy12aXNpYmxlLCBzdXBwcmVzcyB0aGUgZm9jdXMgb3V0bGluZVxuLy8gb24gZWxlbWVudHMgdGhhdCBwcm9ncmFtbWF0aWNhbGx5IHJlY2VpdmUgZm9jdXMgYnV0IHdvdWxkbid0IG5vcm1hbGx5IHNob3cgYSB2aXNpYmxlXG4vLyBmb2N1cyBvdXRsaW5lLiBJbiBnZW5lcmFsLCB0aGlzIHdvdWxkIG1lYW4gdGhhdCB0aGUgb3V0bGluZSBpcyBvbmx5IGFwcGxpZWQgaWYgdGhlXG4vLyBpbnRlcmFjdGlvbiB0aGF0IGxlZCB0byB0aGUgZWxlbWVudCByZWNlaXZpbmcgcHJvZ3JhbW1hdGljIGZvY3VzIHdhcyBhIGtleWJvYXJkIGludGVyYWN0aW9uLFxuLy8gb3IgdGhlIGJyb3dzZXIgaGFzIHNvbWVob3cgZGV0ZXJtaW5lZCB0aGF0IHRoZSB1c2VyIGlzIHByaW1hcmlseSBhIGtleWJvYXJkIHVzZXIgYW5kL29yXG4vLyB3YW50cyBmb2N1cyBvdXRsaW5lcyB0byBhbHdheXMgYmUgcHJlc2VudGVkLlxuLy9cbi8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmZvY3VzLXZpc2libGVcbi8vIGFuZCBodHRwczovL2RldmVsb3Blci5wYWNpZWxsb2dyb3VwLmNvbS9ibG9nLzIwMTgvMDMvZm9jdXMtdmlzaWJsZS1hbmQtYmFja3dhcmRzLWNvbXBhdGliaWxpdHkvXG5bdGFiaW5kZXg9XCItMVwiXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xufVxuXG5cbi8vIENvbnRlbnQgZ3JvdXBpbmdcbi8vXG4vLyAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDFcbiAgaGVpZ2h0OiAwOyAvLyAxXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyAyXG59XG5cblxuLy9cbi8vIFR5cG9ncmFwaHlcbi8vXG5cbi8vIFJlbW92ZSB0b3AgbWFyZ2lucyBmcm9tIGhlYWRpbmdzXG4vL1xuLy8gQnkgZGVmYXVsdCwgYDxoMT5gLWA8aDY+YCBhbGwgcmVjZWl2ZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zLiBXZSBudWtlIHRoZSB0b3Bcbi8vIG1hcmdpbiBmb3IgZWFzaWVyIGNvbnRyb2wgd2l0aGluIHR5cGUgc2NhbGVzIGFzIGl0IGF2b2lkcyBtYXJnaW4gY29sbGFwc2luZy5cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1saXN0LWNvbW1hLW5ld2xpbmUtYWZ0ZXJcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbn1cblxuLy8gUmVzZXQgbWFyZ2lucyBvbiBwYXJhZ3JhcGhzXG4vL1xuLy8gU2ltaWxhcmx5LCB0aGUgdG9wIG1hcmdpbiBvbiBgPHA+YHMgZ2V0IHJlc2V0LiBIb3dldmVyLCB3ZSBhbHNvIHJlc2V0IHRoZVxuLy8gYm90dG9tIG1hcmdpbiB0byB1c2UgYHJlbWAgdW5pdHMgaW5zdGVhZCBvZiBgZW1gLlxucCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbn1cblxuLy8gQWJicmV2aWF0aW9uc1xuLy9cbi8vIDEuIER1cGxpY2F0ZSBiZWhhdmlvciB0byB0aGUgZGF0YS0qIGF0dHJpYnV0ZSBmb3Igb3VyIHRvb2x0aXAgcGx1Z2luXG4vLyAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuLy8gMy4gQWRkIGV4cGxpY2l0IGN1cnNvciB0byBpbmRpY2F0ZSBjaGFuZ2VkIGJlaGF2aW9yLlxuLy8gNC4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuLy8gNS4gUHJldmVudCB0aGUgdGV4dC1kZWNvcmF0aW9uIHRvIGJlIHNraXBwZWQuXG5cbmFiYnJbdGl0bGVdLFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7IC8vIDFcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIDJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAyXG4gIGN1cnNvcjogaGVscDsgLy8gM1xuICBib3JkZXItYm90dG9tOiAwOyAvLyA0XG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTsgLy8gNVxufVxuXG5hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxub2wsXG51bCxcbmRsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxub2wgb2wsXG51bCB1bCxcbm9sIHVsLFxudWwgb2wge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG5kdCB7XG4gIGZvbnQtd2VpZ2h0OiAkZHQtZm9udC13ZWlnaHQ7XG59XG5cbmRkIHtcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gIG1hcmdpbi1sZWZ0OiAwOyAvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdFxufVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZGVyOyAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpXG59XG5cbnNtYWxsIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDgwJSk7IC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzXG59XG5cbi8vXG4vLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbi8vIGFsbCBicm93c2Vycy5cbi8vXG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDc1JSk7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7IGJvdHRvbTogLS4yNWVtOyB9XG5zdXAgeyB0b3A6IC0uNWVtOyB9XG5cblxuLy9cbi8vIExpbmtzXG4vL1xuXG5hIHtcbiAgY29sb3I6ICRsaW5rLWNvbG9yO1xuICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWRlY29yYXRpb247XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvLyBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgY29sb3I6ICRsaW5rLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGxpbmstaG92ZXItZGVjb3JhdGlvbjtcbiAgfVxufVxuXG4vLyBBbmQgdW5kbyB0aGVzZSBzdHlsZXMgZm9yIHBsYWNlaG9sZGVyIGxpbmtzL25hbWVkIGFuY2hvcnMgKHdpdGhvdXQgaHJlZikuXG4vLyBJdCB3b3VsZCBiZSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBqdXN0IHVzZSBhW2hyZWZdIGluIHByZXZpb3VzIGJsb2NrLCBidXQgdGhhdFxuLy8gY2F1c2VzIHNwZWNpZmljaXR5IGlzc3VlcyBpbiBtYW55IG90aGVyIHN0eWxlcyB0aGF0IGFyZSB0b28gY29tcGxleCB0byBmaXguXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xOTQwMlxuXG5hOm5vdChbaHJlZl0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29kZVxuLy9cblxucHJlLFxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7IC8vIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbn1cblxucHJlIHtcbiAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXG4gIG1hcmdpbi10b3A6IDA7XG4gIC8vIFJlc2V0IGJyb3dzZXIgZGVmYXVsdCBvZiBgMWVtYCB0byB1c2UgYHJlbWBzXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIC8vIERvbid0IGFsbG93IGNvbnRlbnQgdG8gYnJlYWsgb3V0c2lkZVxuICBvdmVyZmxvdzogYXV0bztcbn1cblxuXG4vL1xuLy8gRmlndXJlc1xuLy9cblxuZmlndXJlIHtcbiAgLy8gQXBwbHkgYSBjb25zaXN0ZW50IG1hcmdpbiBzdHJhdGVneSAobWF0Y2hlcyBvdXIgdHlwZSBzdHlsZXMpLlxuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vXG4vLyBJbWFnZXMgYW5kIGNvbnRlbnRcbi8vXG5cbmltZyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgLy8gUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG59XG5cbnN2ZyB7XG4gIC8vIFdvcmthcm91bmQgZm9yIHRoZSBTVkcgb3ZlcmZsb3cgYnVnIGluIElFMTAvMTEgaXMgc3RpbGwgcmVxdWlyZWQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI2ODc4XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cblxuLy9cbi8vIFRhYmxlc1xuLy9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyAvLyBQcmV2ZW50IGRvdWJsZSBib3JkZXJzXG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4gIGNvbG9yOiAkdGFibGUtY2FwdGlvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY2FwdGlvbi1zaWRlOiBib3R0b207XG59XG5cbnRoIHtcbiAgLy8gTWF0Y2hlcyBkZWZhdWx0IGA8dGQ+YCBhbGlnbm1lbnQgYnkgaW5oZXJpdGluZyBmcm9tIHRoZSBgPGJvZHk+YCwgb3IgdGhlXG4gIC8vIGNsb3Nlc3QgcGFyZW50IHdpdGggYSBzZXQgYHRleHQtYWxpZ25gLlxuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG5cbi8vXG4vLyBGb3Jtc1xuLy9cblxubGFiZWwge1xuICAvLyBBbGxvdyBsYWJlbHMgdG8gdXNlIGBtYXJnaW5gIGZvciBzcGFjaW5nLlxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206ICRsYWJlbC1tYXJnaW4tYm90dG9tO1xufVxuXG4vLyBSZW1vdmUgdGhlIGRlZmF1bHQgYGJvcmRlci1yYWRpdXNgIHRoYXQgbWFjT1MgQ2hyb21lIGFkZHMuXG4vL1xuLy8gRGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0MDkzXG5idXR0b24ge1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi8vIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbi8vIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbi8vXG4vLyBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2UvXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDsgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlXG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcbn1cblxuLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB3b3JkLXdyYXAgaW4gU2FmYXJpLlxuLy9cbi8vIERldGFpbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDk5MFxuc2VsZWN0IHtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG5cblxuLy8gMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4vLyAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4vLyAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sIC8vIDFcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyXG59XG5cbi8vIE9waW5pb25hdGVkOiBhZGQgXCJoYW5kXCIgY3Vyc29yIHRvIG5vbi1kaXNhYmxlZCBidXR0b24gZWxlbWVudHMuXG5AaWYgJGVuYWJsZS1wb2ludGVyLWN1cnNvci1mb3ItYnV0dG9ucyB7XG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmVtb3ZlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIEZpcmVmb3gsIGJ1dCBkb24ndCByZXN0b3JlIHRoZSBvdXRsaW5lIGxpa2UgTm9ybWFsaXplLlxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLVxuICBwYWRkaW5nOiAwOyAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtXG59XG5cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCBhcHBlYXJhbmNlIG9mIHRlbXBvcmFsIGlucHV0cyB0byBhdm9pZCBhIE1vYmlsZSBTYWZhcmlcbiAgLy8gYnVnIHdoZXJlIHNldHRpbmcgYSBjdXN0b20gbGluZS1oZWlnaHQgcHJldmVudHMgdGV4dCBmcm9tIGJlaW5nIHZlcnRpY2FsbHlcbiAgLy8gY2VudGVyZWQgd2l0aGluIHRoZSBpbnB1dC5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk4NDhcbiAgLy8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTEyNjZcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICAvLyBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgLy8gQnJvd3NlcnMgc2V0IGEgZGVmYXVsdCBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cyxcbiAgLy8gdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXG4gIC8vIFNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGZpZWxkc2V0cyBiZWhhdmUgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTIzNTlcbiAgLy8gYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xuICBtaW4td2lkdGg6IDA7XG4gIC8vIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbi8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBAaW5jbHVkZSBmb250LXNpemUoMS41cmVtKTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG59XG5cbi8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGV4dHJhIHJvdW5kZWQgY29ybmVycyBvbiBzZWFyY2ggaW5wdXRzIGluIGlPUyBzbyB0aGF0IG91clxuICAvLyBgLmZvcm0tY29udHJvbGAgY2xhc3MgY2FuIHByb3Blcmx5IHN0eWxlIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBzaW1wbHlcbiAgLy8gYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNTg2LlxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy9cbi8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbi8vXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vL1xuLy8gMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbi8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbi8vXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0OyAvLyAyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAxXG59XG5cbi8vXG4vLyBDb3JyZWN0IGVsZW1lbnQgZGlzcGxheXNcbi8vXG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRVxufVxuXG4vLyBBbHdheXMgaGlkZSBhbiBlbGVtZW50IHdpdGggdGhlIGBoaWRkZW5gIEhUTUwgYXR0cmlidXRlIChmcm9tIFB1cmVDU1MpLlxuLy8gTmVlZGVkIGZvciBwcm9wZXIgZGlzcGxheSBpbiBJRSAxMC0uXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsIi8vIEZvbnQgQXdlc29tZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kZmEtY3NzLXByZWZpeDogaWNvbi1mYSAhZGVmYXVsdDtcblxuLy8gQ29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRjcmF0ZXItdGhlbWU6ICAgICAgICAgICAgICAjNTg1MUQ4O1xuJGNyYXRlci10aGVtZS0tbGlnaHQ6ICAgICAgICM4MTdBRTM7XG4kY3JhdGVyLXRoZW1lLS12ZXJ5LWxpZ2h0OiAgcmdiYSg4OCwgODEsIDIxNiwgMC4yKTtcbiRncmF5LS12ZXJ5LWxpZ2h0OiAgICAgICAgICAjRjlGQkZGO1xuJGdyYXktLWxpZ2h0OiAgICAgICAgICAgICAgICNFQkYxRkE7XG4kZ3JheTogICAgICAgICAgICAgICAgICAgICAgI0I5QzFEMTtcbiRncmF5LS1kYXJrOiAgICAgICAgICAgICAgICAjQTVBQ0MxO1xuJGdyYXktLXZlcnktZGFyazogICAgICAgICAgICM1OTU5NTk7XG4kcmVkLS1kYXJrOiAgICAgICAgICAgICAgICAgIzlCMkMyQztcbiRyZWQtLXZlcnktbGlnaHQ6ICAgICAgICAgICAjRkVEN0Q3O1xuXG5cbiRscy1jb2xvci1ibGFjazogICAgICAgICAgICAjMDQwNDA1O1xuJGxzLWNvbG9yLWJsYWNrLS1saWdodDogICAgICMyNjNCNUU7XG4kbHMtY29sb3ItYmx1ZTogICAgICAgICAgICAgIzE1QjJFQztcbiRscy1jb2xvci1ncmVlbjogICAgICAgICAgICAjMDBDOTlDO1xuJGxzLWNvbG9yLXJlZDogICAgICAgICAgICAgICNGQjcxNzg7XG4kbHMtY29sb3Itc2Vjb25kYXJ5OiAgICAgICAgIzU1NTQ3QTtcbiRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0OiAkZ3JheS0tdmVyeS1saWdodDtcbiRscy1jb2xvci1ncmF5LS1saWdodDogICAgICAkZ3JheS0tbGlnaHQ7XG4kbHMtY29sb3ItZ3JheTogICAgICAgICAgICAgJGdyYXk7XG4kbHMtY29sb3ItZ3JheS0tZGFyazogICAgICAgJGdyYXktLWRhcms7XG4kbHMtY29sb3ItZ3JheS0tdmVyeS1kYXJrOiAgJGdyYXktLXZlcnktZGFyaztcbiRscy1jb2xvci1saWdodC1ibHVlOiAgICAgICAjMTVCMkVDO1xuJGxzLWNvbG9yLW9yYW5nZTogICAgICAgICAgICNGM0FGNEU7XG5cbiRscy1jb2xvci1yZWQtLWRhcms6ICAgICAgICAgJHJlZC0tZGFyaztcbiRscy1jb2xvci1yZWQtLXZlcnktbGlnaHQ6ICAgJHJlZC0tdmVyeS1saWdodDtcblxuJGNvbG9yLXdhcm5pbmctbGlnaHQ6ICAgICAgICAgICAjNkM0MzJFO1xuJHdhcm5pbmctbGlnaHQ6ICAgICAgICAgICAgICAgICAjRjhFRENCO1xuJGNvbG9yLXN1Y2Nlc3MtbGlnaHQ6ICAgICAgICAgICAjMzU0OTMwO1xuJHN1Y2Nlc3MtbGlnaHQ6ICAgICAgICAgICAgICAgICAjRDVFRUQwO1xuXG4vLyBUaGVtZSBDb2xvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGxzLWNvbG9yLXByaW1hcnk6ICAgICAgICAgICAgICAkY3JhdGVyLXRoZW1lO1xuJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0OiAgICAgICAkY3JhdGVyLXRoZW1lLS1saWdodDtcbiRscy1jb2xvci1wcmltYXJ5LS12ZXJ5LWxpZ2h0OiAgJGNyYXRlci10aGVtZS0tdmVyeS1saWdodDtcblxuXG4vLyBHcmFkaWVudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByaW1hcnktdG8tcHJpbWFyeS1saWdodC1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbHMtY29sb3ItcHJpbWFyeSwgJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0KTtcbiRwcmltYXJ5LWxpZ2h0LXRvLXByaW1hcnktZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0LCAkbHMtY29sb3ItcHJpbWFyeSk7XG5cbi8vIFNoYWRvd3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuJHNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuJHNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgNHB4IDZweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4kc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuJHNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4kc2hhZG93LWlubmVyOiBpbnNldCAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuJHNoYWRvdy1vdXRsaW5lOiAwIDAgMCAzcHggcmdiYSg2NiwgMTUzLCAyMjUsIDAuNSk7XG5cbi8vIEJvb3RzdHJhcCBPdmVycmlkZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHdoaXRlOiAjZmZmO1xuJGJyYW5kLXByaW1hcnk6ICAgICAgICAgICAgICRjcmF0ZXItdGhlbWU7XG4kYnJhbmQtc2Vjb25kYXJ5OiAgICAgICAgICAgJGxzLWNvbG9yLWJsYWNrO1xuJGJyYW5kLXN1Y2Nlc3M6ICAgICAgICAgICAgICRscy1jb2xvci1ncmVlbjtcbiRicmFuZC1pbmZvOiAgICAgICAgICAgICAgICAkbHMtY29sb3ItbGlnaHQtYmx1ZTtcbiRicmFuZC13YXJuaW5nOiAgICAgICAgICAgICAkbHMtY29sb3Itb3JhbmdlO1xuJGJyYW5kLWRhbmdlcjogICAgICAgICAgICAgICRscy1jb2xvci1yZWQ7XG4kYnJhbmQtZGFyazogICAgICAgICAgICAgICAgJGxzLWNvbG9yLXNlY29uZGFyeTtcblxuJGJ0bi1zZWNvbmRhcnktY29sb3I6ICAgICAgICR3aGl0ZTtcbiRidG4tc2Vjb25kYXJ5LWJnOiAgICAgICAgICAkbHMtY29sb3ItYmxhY2s7XG4kYnRuLXNlY29uZGFyeS1ib3JkZXI6ICAgICAgJGxzLWNvbG9yLWJsYWNrO1xuXG4kdGhlbWUtY29sb3JzOiAoXG4gICAgcHJpbWFyeTogICRscy1jb2xvci1wcmltYXJ5LFxuICAgIHNlY29uZGFyeTogJGxzLWNvbG9yLXNlY29uZGFyeSxcbiAgICBzdWNjZXNzOiAkbHMtY29sb3ItZ3JlZW4sXG4gICAgaW5mbzogJGxzLWNvbG9yLWxpZ2h0LWJsdWUsXG4gICAgd2FybmluZzogJGxzLWNvbG9yLW9yYW5nZSxcbiAgICBkYW5nZXI6ICRscy1jb2xvci1yZWQsXG4gICAgbGlnaHQ6ICRscy1jb2xvci1wcmltYXJ5LS1saWdodCxcbiAgICBkYXJrOiAkbHMtY29sb3Itc2Vjb25kYXJ5XG4pO1xuXG4kbmF2YmFyLWRhcmstdG9nZ2xlci1pY29uLWJnOiAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0nI3tzdHItcmVwbGFjZShzdHItcmVwbGFjZSgjeyRuYXZiYXItZGFyay1jb2xvcn0sIFwiKFwiLCBcIiUyOFwiKSwgXCIpXCIsIFwiJTI5XCIpfScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0VcIik7XG4kbmF2YmFyLWxpZ2h0LXRvZ2dsZXItaWNvbi1iZzogICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0nI3tzdHItcmVwbGFjZShzdHItcmVwbGFjZSgjeyRuYXZiYXItbGlnaHQtY29sb3J9LCBcIihcIiwgXCIlMjhcIiksIFwiKVwiLCBcIiUyOVwiKX0nIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXG5cbi8vIC0tIEhFQURFUiBTRUNUSU9OIC0tXG5cbiRoZWFkZXItYmctY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAkbHMtY29sb3ItcHJpbWFyeTtcbiRoZWFkZXItZm9udC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkd2hpdGU7XG4kaGVhZGVyLWJ1dHRvbnMtYmctY29sb3I6ICAgICAgICAgICAgICAgJGxzLWNvbG9yLWJsYWNrO1xuJGhlYWRlci1idXR0b25zLWJnLWNvbG9yLS1ob3ZlcjogICAgICAgIGxpZ2h0ZW4oJGxzLWNvbG9yLWJsYWNrLDUlKTtcbiRoZWFkZXItYnV0dG9ucy1mb250LWNvbG9yOiAgICAgICAgICAgICAkd2hpdGU7XG5cblxuLy8gLS0gU0lERUJBUiBTRUNUSU9OIC0tXG4kc2lkZWJhci1iZy1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgJGxzLWNvbG9yLXNlY29uZGFyeTtcbiRzaWRlYmFyLWZvbnQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAkd2hpdGU7XG4kc2lkZWJhci1pY29uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgIzlFQTlDNDtcbiRzaWRlbWVudS1pdGVtLWJnLWNvbG9yLS1ob3ZlcjogICAgICAgICBsaWdodGVuKCRscy1jb2xvci1ibGFjaywxMCUpO1xuJHNpZGVtZW51LWl0ZW0tYmctY29sb3ItLWFjdGl2ZTogICAgICAgIHRyYW5zcGFyZW50O1xuJHNpZGVtZW51LWl0ZW0tZm9udC1jb2xvcjogICAgICAgICAgICAgICR3aGl0ZTtcbiRzaWRlbWVudS1pdGVtLWZvbnQtY29sb3ItLWFjdGl2ZTogICAgICAkbHMtY29sb3ItcHJpbWFyeTtcbiRzaWRlbWVudS1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAgICAkbHMtY29sb3ItZ3JheS0tdmVyeS1kYXJrO1xuJHNpZGVtZW51LXN1Ym1lbnUtYmc6ICAgICAgICAgICAgICAgICAgIGxpZ2h0ZW4oJGxzLWNvbG9yLWJsYWNrLDMlKTtcblxuXG4vLyAtLSBEUk9QRE9XTiAtLVxuJGRyb3Bkb3duLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICRscy1jb2xvci1ibGFjaztcbiRkcm9wZG93bi1saW5rLWNvbG9yIDogICAgICAgICAgICAgICAgICAkd2hpdGU7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yIDogICAgICAgICAgICAgICAgJGxzLWNvbG9yLWJsYWNrO1xuJGRyb3Bkb3duLWRpdmlkZXItYmcgOiAgICAgICAgICAgICAgICAgICRscy1jb2xvci1ncmF5LS12ZXJ5LWRhcms7XG4kZHJvcGRvd24taGVhZGVyLWNvbG9yIDogICAgICAgICAgICAgICAgJGxzLWNvbG9yLXByaW1hcnk7XG4kZHJvcGRvd24taGVhZGVyLWJvcmRlci1jb2xvciA6ICAgICAgICAgJGxzLWNvbG9yLWdyYXktLXZlcnktZGFyaztcblxuLy8gLS0gSE9SSVpPTlRBTCBNRU5VIC0tXG5cbiRoZWFkZXItYm90dG9tLWJnIDogICAgICAgICAgICAgICAgICAgICAkbHMtY29sb3ItYmxhY2s7XG4kaGVhZGVyLW1lbnUtaXRlbS1mb250LWNvbG9yIDogICAgICAgICAgZGFya2VuKCR3aGl0ZSwxMCUpO1xuJGhlYWRlci1tZW51LWl0ZW0tZm9udC1jb2xvci0tYWN0aXZlIDogICR3aGl0ZTtcbiRoZWFkZXItbWVudS1pdGVtLWJnLWNvbG9yLS1ob3ZlciA6ICAgICBsaWdodGVuKCRscy1jb2xvci1ibGFjaywxMCUpO1xuJGhlYWRlci1tZW51LWl0ZW0tYmctY29sb3ItLWFjdGl2ZSA6ICAgIGxpZ2h0ZW4oJGxzLWNvbG9yLWJsYWNrLDEwJSk7XG5cbi8vIC0tIE1JU0MgLS1cbiRjb2RlLWJnIDogJGxzLWNvbG9yLWJsYWNrO1xuJGNvZGUtY29sb3IgOiAkbHMtY29sb3ItcHJpbWFyeTtcblxuXG4vLyBGb250c1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRiYXNlLWZvbnQtZmFtaWx5IDogICAgICAgICAgICAgJ1BvcHBpbnMnLCBzYW5zLXNlcmlmO1xuJGJhc2UtZm9udC1jb2xvciA6ICAgICAgICAgICAgICBsaWdodGVuKCRscy1jb2xvci1ibGFjaywgMTUlKTtcbiRoZWFkaW5nLWZvbnQtY29sb3IgOiAgICAgICAgICAgJGxzLWNvbG9yLWJsYWNrO1xuJGZvbnQtZmFtaWx5LWJhc2UgOiAgICAgICAgICAgICAkYmFzZS1mb250LWZhbWlseTtcblxuJGZvbnQtc2l6ZS1iYXNlOiAgICAgICAgICAgICAgICAxcmVtO1xuJGZvbnQtc2l6ZS1zZWN0aW9uLXRpdGxlIDogICAgICAxLjI1cmVtO1xuJGZvbnQtc2l6ZS1zZW1pLXNlY3Rpb24tdGl0bGUgOiAxLjFyZW07XG4kZm9udC1zaXplLXBhZ2UtdGl0bGUgOiAgICAgICAgIDEuNXJlbTtcblxuXG5cbi8vIEJyZWFrcG9pbnRzXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHgtc21hbGwtYnJlYWtwb2ludCAgICAgICA6ICA0ODBweDtcbiR4LXNtYWxsLWJyZWFrcG9pbnQtYmVsb3cgOiAgJHgtc21hbGwtYnJlYWtwb2ludCAtIDFweDtcbiRzbWFsbC1icmVha3BvaW50ICAgICAgICAgOiAgNzY4cHg7XG4kc21hbGwtYnJlYWtwb2ludC1iZWxvdyAgIDogICRzbWFsbC1icmVha3BvaW50IC0gMXB4O1xuJG1lZGl1bS1icmVha3BvaW50ICAgICAgICA6ICA5OTJweDtcbiRtZWRpdW0tYnJlYWtwb2ludC1iZWxvdyAgOiAgJG1lZGl1bS1icmVha3BvaW50IC0gMXB4O1xuJGxhcmdlLWJyZWFrcG9pbnQgICAgICAgICA6ICAxMjQwcHg7XG4kbGFyZ2UtYnJlYWtwb2ludC1iZWxvdyAgIDogICRsYXJnZS1icmVha3BvaW50IC0gMXB4O1xuJHgtbGFyZ2UtYnJlYWtwb2ludCAgICAgICA6ICAxODAwcHg7XG4keC1sYXJnZS1icmVha3BvaW50LWJlbG93IDogICR4LWxhcmdlLWJyZWFrcG9pbnQgLSAxcHg7XG5cblxuXG4vLyBPdGhlclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRscy1sb2dpbi1iZy1jb2xvci1vdmVybGF5OiAgIHJnYmEoMzggLDUwICw1NiwuNik7XG4kbHMtbG9naW4tMy1iZy1jb2xvci1vdmVybGF5OiByZ2JhKDAsIDAgLCAwLCAuMzUpO1xuXG4kaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTogICAgICAgIDEuMnJlbTtcbiRjYXJkLWNhcC1iZzogICAgICAgICAgICAgICAgICAgI2ZmZjtcblxuJHBhY2UtbG9hZGVyLWNvbG9yIDogICAgICAgICAgICBkYXJrZW4oJGxzLWNvbG9yLXByaW1hcnksIDEwJSk7XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1ibGFja2xpc3QsIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcblxuLy8gU0NTUyBSRlMgbWl4aW5cbi8vXG4vLyBBdXRvbWF0ZWQgZm9udC1yZXNpemluZ1xuLy9cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9yZnNcblxuLy8gQ29uZmlndXJhdGlvblxuXG4vLyBCYXNlIGZvbnQgc2l6ZVxuJHJmcy1iYXNlLWZvbnQtc2l6ZTogMS4yNXJlbSAhZGVmYXVsdDtcbiRyZnMtZm9udC1zaXplLXVuaXQ6IHJlbSAhZGVmYXVsdDtcblxuLy8gQnJlYWtwb2ludCBhdCB3aGVyZSBmb250LXNpemUgc3RhcnRzIGRlY3JlYXNpbmcgaWYgc2NyZWVuIHdpZHRoIGlzIHNtYWxsZXJcbiRyZnMtYnJlYWtwb2ludDogMTIwMHB4ICFkZWZhdWx0O1xuJHJmcy1icmVha3BvaW50LXVuaXQ6IHB4ICFkZWZhdWx0O1xuXG4vLyBSZXNpemUgZm9udC1zaXplIGJhc2VkIG9uIHNjcmVlbiBoZWlnaHQgYW5kIHdpZHRoXG4kcmZzLXR3by1kaW1lbnNpb25hbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhY3RvciBvZiBkZWNyZWFzZVxuJHJmcy1mYWN0b3I6IDEwICFkZWZhdWx0O1xuXG5AaWYgdHlwZS1vZigkcmZzLWZhY3RvcikgIT0gXCJudW1iZXJcIiBvciAkcmZzLWZhY3RvciA8PSAxIHtcbiAgQGVycm9yIFwiYCN7JHJmcy1mYWN0b3J9YCBpcyBub3QgYSB2YWxpZCAgJHJmcy1mYWN0b3IsIGl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDEuXCI7XG59XG5cbi8vIEdlbmVyYXRlIGVuYWJsZSBvciBkaXNhYmxlIGNsYXNzZXMuIFBvc3NpYmlsaXRpZXM6IGZhbHNlLCBcImVuYWJsZVwiIG9yIFwiZGlzYWJsZVwiXG4kcmZzLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gMSByZW0gPSAkcmZzLXJlbS12YWx1ZSBweFxuJHJmcy1yZW0tdmFsdWU6IDE2ICFkZWZhdWx0O1xuXG4vLyBTYWZhcmkgaWZyYW1lIHJlc2l6ZSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9pc3N1ZXMvMTRcbiRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERpc2FibGUgUkZTIGJ5IHNldHRpbmcgJGVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZXMgdG8gZmFsc2VcbiRlbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemVzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBDYWNoZSAkcmZzLWJhc2UtZm9udC1zaXplIHVuaXRcbiRyZnMtYmFzZS1mb250LXNpemUtdW5pdDogdW5pdCgkcmZzLWJhc2UtZm9udC1zaXplKTtcblxuLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkcmZzLWJhc2UtZm9udC1zaXplIGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLWJhc2UtZm9udC1zaXplLXVuaXQgPT0gXCJweFwiIHtcbiAgJHJmcy1iYXNlLWZvbnQtc2l6ZTogJHJmcy1iYXNlLWZvbnQtc2l6ZSAvICgkcmZzLWJhc2UtZm9udC1zaXplICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1iYXNlLWZvbnQtc2l6ZS11bml0ID09IFwicmVtXCIge1xuICAkcmZzLWJhc2UtZm9udC1zaXplOiAkcmZzLWJhc2UtZm9udC1zaXplIC8gKCRyZnMtYmFzZS1mb250LXNpemUgKiAwICsgMSAvICRyZnMtcmVtLXZhbHVlKTtcbn1cblxuLy8gQ2FjaGUgJHJmcy1icmVha3BvaW50IHVuaXQgdG8gcHJldmVudCBtdWx0aXBsZSBjYWxsc1xuJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGU6IHVuaXQoJHJmcy1icmVha3BvaW50KTtcblxuLy8gUmVtb3ZlIHVuaXQgZnJvbSAkcmZzLWJyZWFrcG9pbnQgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IFwicHhcIiB7XG4gICRyZnMtYnJlYWtwb2ludDogJHJmcy1icmVha3BvaW50IC8gKCRyZnMtYnJlYWtwb2ludCAqIDAgKyAxKTtcbn1cbkBlbHNlIGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IFwicmVtXCIgb3IgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJlbVwiIHtcbiAgJHJmcy1icmVha3BvaW50OiAkcmZzLWJyZWFrcG9pbnQgLyAoJHJmcy1icmVha3BvaW50ICogMCArIDEgLyAkcmZzLXJlbS12YWx1ZSk7XG59XG5cbi8vIFJlc3BvbnNpdmUgZm9udC1zaXplIG1peGluXG5AbWl4aW4gcmZzKCRmcywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgLy8gQ2FjaGUgJGZzIHVuaXRcbiAgJGZzLXVuaXQ6IGlmKHR5cGUtb2YoJGZzKSA9PSBcIm51bWJlclwiLCB1bml0KCRmcyksIGZhbHNlKTtcblxuICAvLyBBZGQgIWltcG9ydGFudCBzdWZmaXggaWYgbmVlZGVkXG4gICRyZnMtc3VmZml4OiBpZigkaW1wb3J0YW50LCBcIiAhaW1wb3J0YW50XCIsIFwiXCIpO1xuXG4gIC8vIElmICRmcyBpc24ndCBhIG51bWJlciAobGlrZSBpbmhlcml0KSBvciAkZnMgaGFzIGEgdW5pdCAobm90IHB4IG9yIHJlbSwgbGlrZSAxLjVlbSkgb3IgJCBpcyAwLCBqdXN0IHByaW50IHRoZSB2YWx1ZVxuICBAaWYgbm90ICRmcy11bml0IG9yICRmcy11bml0ICE9IFwiXCIgYW5kICRmcy11bml0ICE9IFwicHhcIiBhbmQgJGZzLXVuaXQgIT0gXCJyZW1cIiBvciAkZnMgPT0gMCB7XG4gICAgZm9udC1zaXplOiAjeyRmc30jeyRyZnMtc3VmZml4fTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gVmFyaWFibGVzIGZvciBzdG9yaW5nIHN0YXRpYyBhbmQgZmx1aWQgcmVzY2FsaW5nXG4gICAgJHJmcy1zdGF0aWM6IG51bGw7XG4gICAgJHJmcy1mbHVpZDogbnVsbDtcblxuICAgIC8vIFJlbW92ZSBweC11bml0IGZyb20gJGZzIGZvciBjYWxjdWxhdGlvbnNcbiAgICBAaWYgJGZzLXVuaXQgPT0gXCJweFwiIHtcbiAgICAgICRmczogJGZzIC8gKCRmcyAqIDAgKyAxKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGZzLXVuaXQgPT0gXCJyZW1cIiB7XG4gICAgICAkZnM6ICRmcyAvICgkZnMgKiAwICsgMSAvICRyZnMtcmVtLXZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgZGVmYXVsdCBmb250LXNpemVcbiAgICBAaWYgJHJmcy1mb250LXNpemUtdW5pdCA9PSByZW0ge1xuICAgICAgJHJmcy1zdGF0aWM6ICN7JGZzIC8gJHJmcy1yZW0tdmFsdWV9cmVtI3skcmZzLXN1ZmZpeH07XG4gICAgfVxuICAgIEBlbHNlIGlmICRyZnMtZm9udC1zaXplLXVuaXQgPT0gcHgge1xuICAgICAgJHJmcy1zdGF0aWM6ICN7JGZzfXB4I3skcmZzLXN1ZmZpeH07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBlcnJvciBcImAjeyRyZnMtZm9udC1zaXplLXVuaXR9YCBpcyBub3QgYSB2YWxpZCB1bml0IGZvciAkcmZzLWZvbnQtc2l6ZS11bml0LiBVc2UgYHB4YCBvciBgcmVtYC5cIjtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGFkZCBtZWRpYSBxdWVyeSBpZiBmb250LXNpemUgaXMgYmlnZ2VyIGFzIHRoZSBtaW5pbXVtIGZvbnQtc2l6ZVxuICAgIC8vIElmICRyZnMtZmFjdG9yID09IDEsIG5vIHJlc2NhbGluZyB3aWxsIHRha2UgcGxhY2VcbiAgICBAaWYgJGZzID4gJHJmcy1iYXNlLWZvbnQtc2l6ZSBhbmQgJGVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZXMge1xuICAgICAgJG1pbi13aWR0aDogbnVsbDtcbiAgICAgICR2YXJpYWJsZS11bml0OiBudWxsO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgbWluaW11bSBmb250LXNpemUgZm9yIGdpdmVuIGZvbnQtc2l6ZVxuICAgICAgJGZzLW1pbjogJHJmcy1iYXNlLWZvbnQtc2l6ZSArICgkZnMgLSAkcmZzLWJhc2UtZm9udC1zaXplKSAvICRyZnMtZmFjdG9yO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGdpdmVuIGZvbnQtc2l6ZSBhbmQgbWluaW11bSBmb250LXNpemUgZm9yIGdpdmVuIGZvbnQtc2l6ZVxuICAgICAgJGZzLWRpZmY6ICRmcyAtICRmcy1taW47XG5cbiAgICAgIC8vIEJhc2UgZm9udC1zaXplIGZvcm1hdHRpbmdcbiAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHVuaXQgaXMgdmFsaWQsIGJlY2F1c2Ugd2UgZGlkIHRoYXQgYmVmb3JlXG4gICAgICAkbWluLXdpZHRoOiBpZigkcmZzLWZvbnQtc2l6ZS11bml0ID09IHJlbSwgI3skZnMtbWluIC8gJHJmcy1yZW0tdmFsdWV9cmVtLCAjeyRmcy1taW59cHgpO1xuXG4gICAgICAvLyBJZiB0d28tZGltZW5zaW9uYWwsIHVzZSBzbWFsbGVzdCBvZiBzY3JlZW4gd2lkdGggYW5kIGhlaWdodFxuICAgICAgJHZhcmlhYmxlLXVuaXQ6IGlmKCRyZnMtdHdvLWRpbWVuc2lvbmFsLCB2bWluLCB2dyk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdmFyaWFibGUgd2lkdGggYmV0d2VlbiAwIGFuZCAkcmZzLWJyZWFrcG9pbnRcbiAgICAgICR2YXJpYWJsZS13aWR0aDogI3skZnMtZGlmZiAqIDEwMCAvICRyZnMtYnJlYWtwb2ludH0jeyR2YXJpYWJsZS11bml0fTtcblxuICAgICAgLy8gU2V0IHRoZSBjYWxjdWxhdGVkIGZvbnQtc2l6ZS5cbiAgICAgICRyZnMtZmx1aWQ6IGNhbGMoI3skbWluLXdpZHRofSArICN7JHZhcmlhYmxlLXdpZHRofSkgI3skcmZzLXN1ZmZpeH07XG4gICAgfVxuXG4gICAgLy8gUmVuZGVyaW5nXG4gICAgQGlmICRyZnMtZmx1aWQgPT0gbnVsbCB7XG4gICAgICAvLyBPbmx5IHJlbmRlciBzdGF0aWMgZm9udC1zaXplIGlmIG5vIGZsdWlkIGZvbnQtc2l6ZSBpcyBhdmFpbGFibGVcbiAgICAgIGZvbnQtc2l6ZTogJHJmcy1zdGF0aWM7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRtcS12YWx1ZTogbnVsbDtcblxuICAgICAgLy8gUkZTIGJyZWFrcG9pbnQgZm9ybWF0dGluZ1xuICAgICAgQGlmICRyZnMtYnJlYWtwb2ludC11bml0ID09IGVtIG9yICRyZnMtYnJlYWtwb2ludC11bml0ID09IHJlbSB7XG4gICAgICAgICRtcS12YWx1ZTogI3skcmZzLWJyZWFrcG9pbnQgLyAkcmZzLXJlbS12YWx1ZX0jeyRyZnMtYnJlYWtwb2ludC11bml0fTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRyZnMtYnJlYWtwb2ludC11bml0ID09IHB4IHtcbiAgICAgICAgJG1xLXZhbHVlOiAjeyRyZnMtYnJlYWtwb2ludH1weDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGVycm9yIFwiYCN7JHJmcy1icmVha3BvaW50LXVuaXR9YCBpcyBub3QgYSB2YWxpZCB1bml0IGZvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC4gVXNlIGBweGAsIGBlbWAgb3IgYHJlbWAuXCI7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkcmZzLWNsYXNzID09IFwiZGlzYWJsZVwiIHtcbiAgICAgICAgLy8gQWRkaW5nIGFuIGV4dHJhIGNsYXNzIGluY3JlYXNlcyBzcGVjaWZpY2l0eSxcbiAgICAgICAgLy8gd2hpY2ggcHJldmVudHMgdGhlIG1lZGlhIHF1ZXJ5IHRvIG92ZXJyaWRlIHRoZSBmb250IHNpemVcbiAgICAgICAgJixcbiAgICAgICAgLmRpc2FibGUtcmVzcG9uc2l2ZS1mb250LXNpemUgJixcbiAgICAgICAgJi5kaXNhYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplIHtcbiAgICAgICAgICBmb250LXNpemU6ICRyZnMtc3RhdGljO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHJmcy1zdGF0aWM7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkcmZzLXR3by1kaW1lbnNpb25hbCB7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAjeyRtcS12YWx1ZX0pLCAobWF4LWhlaWdodDogI3skbXEtdmFsdWV9KSB7XG4gICAgICAgICAgQGlmICRyZnMtY2xhc3MgPT0gXCJlbmFibGVcIiB7XG4gICAgICAgICAgICAuZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplICYsXG4gICAgICAgICAgICAmLmVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHJmcy1mbHVpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkcmZzLWZsdWlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAkcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXgge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGxlbmd0aC16ZXJvLW5vLXVuaXRcbiAgICAgICAgICAgIG1pbi13aWR0aDogMHZ3O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogI3skbXEtdmFsdWV9KSB7XG4gICAgICAgICAgQGlmICRyZnMtY2xhc3MgPT0gXCJlbmFibGVcIiB7XG4gICAgICAgICAgICAuZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplICYsXG4gICAgICAgICAgICAmLmVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHJmcy1mbHVpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkcmZzLWZsdWlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAkcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXgge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGxlbmd0aC16ZXJvLW5vLXVuaXRcbiAgICAgICAgICAgIG1pbi13aWR0aDogMHZ3O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgZm9udC1zaXplICYgcmVzcG9uc2l2ZS1mb250LXNpemUgbWl4aW4gdXNlcyBSRlMgdG8gcmVzY2FsZSBmb250IHNpemVzXG5AbWl4aW4gZm9udC1zaXplKCRmcywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmZzKCRmcywgJGltcG9ydGFudCk7XG59XG5cbkBtaXhpbiByZXNwb25zaXZlLWZvbnQtc2l6ZSgkZnMsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJmcygkZnMsICRpbXBvcnRhbnQpO1xufVxuIiwiLy8gVmFyaWFibGVzXG4vL1xuLy8gVmFyaWFibGVzIHNob3VsZCBmb2xsb3cgdGhlIGAkY29tcG9uZW50LXN0YXRlLXByb3BlcnR5LXNpemVgIGZvcm11bGEgZm9yXG4vLyBjb25zaXN0ZW50IG5hbWluZy4gRXg6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvciBhbmQgJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14cy5cblxuLy8gQ29sb3Igc3lzdGVtXG5cbiR3aGl0ZTogICAgI2ZmZiAhZGVmYXVsdDtcbiRncmF5LTEwMDogI2Y4ZjlmYSAhZGVmYXVsdDtcbiRncmF5LTIwMDogI2U5ZWNlZiAhZGVmYXVsdDtcbiRncmF5LTMwMDogI2RlZTJlNiAhZGVmYXVsdDtcbiRncmF5LTQwMDogI2NlZDRkYSAhZGVmYXVsdDtcbiRncmF5LTUwMDogI2FkYjViZCAhZGVmYXVsdDtcbiRncmF5LTYwMDogIzZjNzU3ZCAhZGVmYXVsdDtcbiRncmF5LTcwMDogIzQ5NTA1NyAhZGVmYXVsdDtcbiRncmF5LTgwMDogIzM0M2E0MCAhZGVmYXVsdDtcbiRncmF5LTkwMDogIzIxMjUyOSAhZGVmYXVsdDtcbiRibGFjazogICAgIzAwMCAhZGVmYXVsdDtcblxuJGdyYXlzOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kZ3JheXM6IG1hcC1tZXJnZShcbiAgKFxuICAgIFwiMTAwXCI6ICRncmF5LTEwMCxcbiAgICBcIjIwMFwiOiAkZ3JheS0yMDAsXG4gICAgXCIzMDBcIjogJGdyYXktMzAwLFxuICAgIFwiNDAwXCI6ICRncmF5LTQwMCxcbiAgICBcIjUwMFwiOiAkZ3JheS01MDAsXG4gICAgXCI2MDBcIjogJGdyYXktNjAwLFxuICAgIFwiNzAwXCI6ICRncmF5LTcwMCxcbiAgICBcIjgwMFwiOiAkZ3JheS04MDAsXG4gICAgXCI5MDBcIjogJGdyYXktOTAwXG4gICksXG4gICRncmF5c1xuKTtcblxuJGJsdWU6ICAgICMwMDdiZmYgIWRlZmF1bHQ7XG4kaW5kaWdvOiAgIzY2MTBmMiAhZGVmYXVsdDtcbiRwdXJwbGU6ICAjNmY0MmMxICFkZWZhdWx0O1xuJHBpbms6ICAgICNlODNlOGMgIWRlZmF1bHQ7XG4kcmVkOiAgICAgI2RjMzU0NSAhZGVmYXVsdDtcbiRvcmFuZ2U6ICAjZmQ3ZTE0ICFkZWZhdWx0O1xuJHllbGxvdzogICNmZmMxMDcgIWRlZmF1bHQ7XG4kZ3JlZW46ICAgIzI4YTc0NSAhZGVmYXVsdDtcbiR0ZWFsOiAgICAjMjBjOTk3ICFkZWZhdWx0O1xuJGN5YW46ICAgICMxN2EyYjggIWRlZmF1bHQ7XG5cbiRjb2xvcnM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRjb2xvcnM6IG1hcC1tZXJnZShcbiAgKFxuICAgIFwiYmx1ZVwiOiAgICAgICAkYmx1ZSxcbiAgICBcImluZGlnb1wiOiAgICAgJGluZGlnbyxcbiAgICBcInB1cnBsZVwiOiAgICAgJHB1cnBsZSxcbiAgICBcInBpbmtcIjogICAgICAgJHBpbmssXG4gICAgXCJyZWRcIjogICAgICAgICRyZWQsXG4gICAgXCJvcmFuZ2VcIjogICAgICRvcmFuZ2UsXG4gICAgXCJ5ZWxsb3dcIjogICAgICR5ZWxsb3csXG4gICAgXCJncmVlblwiOiAgICAgICRncmVlbixcbiAgICBcInRlYWxcIjogICAgICAgJHRlYWwsXG4gICAgXCJjeWFuXCI6ICAgICAgICRjeWFuLFxuICAgIFwid2hpdGVcIjogICAgICAkd2hpdGUsXG4gICAgXCJncmF5XCI6ICAgICAgICRncmF5LTYwMCxcbiAgICBcImdyYXktZGFya1wiOiAgJGdyYXktODAwXG4gICksXG4gICRjb2xvcnNcbik7XG5cbiRwcmltYXJ5OiAgICAgICAkYmx1ZSAhZGVmYXVsdDtcbiRzZWNvbmRhcnk6ICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kc3VjY2VzczogICAgICAgJGdyZWVuICFkZWZhdWx0O1xuJGluZm86ICAgICAgICAgICRjeWFuICFkZWZhdWx0O1xuJHdhcm5pbmc6ICAgICAgICR5ZWxsb3cgIWRlZmF1bHQ7XG4kZGFuZ2VyOiAgICAgICAgJHJlZCAhZGVmYXVsdDtcbiRsaWdodDogICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kZGFyazogICAgICAgICAgJGdyYXktODAwICFkZWZhdWx0O1xuXG4kdGhlbWUtY29sb3JzOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kdGhlbWUtY29sb3JzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcInByaW1hcnlcIjogICAgJHByaW1hcnksXG4gICAgXCJzZWNvbmRhcnlcIjogICRzZWNvbmRhcnksXG4gICAgXCJzdWNjZXNzXCI6ICAgICRzdWNjZXNzLFxuICAgIFwiaW5mb1wiOiAgICAgICAkaW5mbyxcbiAgICBcIndhcm5pbmdcIjogICAgJHdhcm5pbmcsXG4gICAgXCJkYW5nZXJcIjogICAgICRkYW5nZXIsXG4gICAgXCJsaWdodFwiOiAgICAgICRsaWdodCxcbiAgICBcImRhcmtcIjogICAgICAgJGRhcmtcbiAgKSxcbiAgJHRoZW1lLWNvbG9yc1xuKTtcblxuLy8gU2V0IGEgc3BlY2lmaWMganVtcCBwb2ludCBmb3IgcmVxdWVzdGluZyBjb2xvciBqdW1wc1xuJHRoZW1lLWNvbG9yLWludGVydmFsOiAgICAgIDglICFkZWZhdWx0O1xuXG4vLyBUaGUgeWlxIGxpZ2h0bmVzcyB2YWx1ZSB0aGF0IGRldGVybWluZXMgd2hlbiB0aGUgbGlnaHRuZXNzIG9mIGNvbG9yIGNoYW5nZXMgZnJvbSBcImRhcmtcIiB0byBcImxpZ2h0XCIuIEFjY2VwdGFibGUgdmFsdWVzIGFyZSBiZXR3ZWVuIDAgYW5kIDI1NS5cbiR5aXEtY29udHJhc3RlZC10aHJlc2hvbGQ6ICAxNTAgIWRlZmF1bHQ7XG5cbi8vIEN1c3RvbWl6ZSB0aGUgbGlnaHQgYW5kIGRhcmsgdGV4dCBjb2xvcnMgZm9yIHVzZSBpbiBvdXIgWUlRIGNvbG9yIGNvbnRyYXN0IGZ1bmN0aW9uLlxuJHlpcS10ZXh0LWRhcms6ICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbiR5aXEtdGV4dC1saWdodDogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vIENoYXJhY3RlcnMgd2hpY2ggYXJlIGVzY2FwZWQgYnkgdGhlIGVzY2FwZS1zdmcgZnVuY3Rpb25cbiRlc2NhcGVkLWNoYXJhY3RlcnM6IChcbiAgKFwiPFwiLFwiJTNjXCIpLFxuICAoXCI+XCIsXCIlM2VcIiksXG4gIChcIiNcIixcIiUyM1wiKSxcbikgIWRlZmF1bHQ7XG5cblxuLy8gT3B0aW9uc1xuLy9cbi8vIFF1aWNrbHkgbW9kaWZ5IGdsb2JhbCBzdHlsaW5nIGJ5IGVuYWJsaW5nIG9yIGRpc2FibGluZyBvcHRpb25hbCBmZWF0dXJlcy5cblxuJGVuYWJsZS1jYXJldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXJvdW5kZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtc2hhZG93czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtZ3JhZGllbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtdHJhbnNpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLW1lZGlhLXF1ZXJ5OiAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5OiAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQsIG5vIGxvbmdlciBhZmZlY3RzIGFueSBjb21waWxlZCBDU1NcbiRlbmFibGUtZ3JpZC1jbGFzc2VzOiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1wb2ludGVyLWN1cnNvci1mb3ItYnV0dG9uczogICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXByaW50LXN0eWxlczogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemVzOiAgICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtdmFsaWRhdGlvbi1pY29uczogICAgICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1kZXByZWNhdGlvbi1tZXNzYWdlczogICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG5cblxuLy8gU3BhY2luZ1xuLy9cbi8vIENvbnRyb2wgdGhlIGRlZmF1bHQgc3R5bGluZyBvZiBtb3N0IEJvb3RzdHJhcCBlbGVtZW50cyBieSBtb2RpZnlpbmcgdGhlc2Vcbi8vIHZhcmlhYmxlcy4gTW9zdGx5IGZvY3VzZWQgb24gc3BhY2luZy5cbi8vIFlvdSBjYW4gYWRkIG1vcmUgZW50cmllcyB0byB0aGUgJHNwYWNlcnMgbWFwLCBzaG91bGQgeW91IG5lZWQgbW9yZSB2YXJpYXRpb24uXG5cbiRzcGFjZXI6IDFyZW0gIWRlZmF1bHQ7XG4kc3BhY2VyczogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJHNwYWNlcnM6IG1hcC1tZXJnZShcbiAgKFxuICAgIDA6IDAsXG4gICAgMTogKCRzcGFjZXIgKiAuMjUpLFxuICAgIDI6ICgkc3BhY2VyICogLjUpLFxuICAgIDM6ICRzcGFjZXIsXG4gICAgNDogKCRzcGFjZXIgKiAxLjUpLFxuICAgIDU6ICgkc3BhY2VyICogMylcbiAgKSxcbiAgJHNwYWNlcnNcbik7XG5cbi8vIFRoaXMgdmFyaWFibGUgYWZmZWN0cyB0aGUgYC5oLSpgIGFuZCBgLnctKmAgY2xhc3Nlcy5cbiRzaXplczogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJHNpemVzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICAyNTogMjUlLFxuICAgIDUwOiA1MCUsXG4gICAgNzU6IDc1JSxcbiAgICAxMDA6IDEwMCUsXG4gICAgYXV0bzogYXV0b1xuICApLFxuICAkc2l6ZXNcbik7XG5cblxuLy8gQm9keVxuLy9cbi8vIFNldHRpbmdzIGZvciB0aGUgYDxib2R5PmAgZWxlbWVudC5cblxuJGJvZHktYmc6ICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG5cblxuLy8gTGlua3Ncbi8vXG4vLyBTdHlsZSBhbmNob3IgZWxlbWVudHMuXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcbiRsaW5rLWRlY29yYXRpb246ICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICBkYXJrZW4oJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgIWRlZmF1bHQ7XG4vLyBEYXJrZW4gcGVyY2VudGFnZSBmb3IgbGlua3Mgd2l0aCBgLnRleHQtKmAgY2xhc3MgKGUuZy4gYC50ZXh0LXN1Y2Nlc3NgKVxuJGVtcGhhc2l6ZWQtbGluay1ob3Zlci1kYXJrZW4tcGVyY2VudGFnZTogMTUlICFkZWZhdWx0O1xuXG4vLyBQYXJhZ3JhcGhzXG4vL1xuLy8gU3R5bGUgcCBlbGVtZW50LlxuXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206ICAgMXJlbSAhZGVmYXVsdDtcblxuXG4vLyBHcmlkIGJyZWFrcG9pbnRzXG4vL1xuLy8gRGVmaW5lIHRoZSBtaW5pbXVtIGRpbWVuc2lvbnMgYXQgd2hpY2ggeW91ciBsYXlvdXQgd2lsbCBjaGFuZ2UsXG4vLyBhZGFwdGluZyB0byBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLCBmb3IgdXNlIGluIG1lZGlhIHF1ZXJpZXMuXG5cbiRncmlkLWJyZWFrcG9pbnRzOiAoXG4gIHhzOiAwLFxuICBzbTogNTc2cHgsXG4gIG1kOiA3NjhweCxcbiAgbGc6IDk5MnB4LFxuICB4bDogMTIwMHB4XG4pICFkZWZhdWx0O1xuXG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkZ3JpZC1icmVha3BvaW50cywgXCIkZ3JpZC1icmVha3BvaW50c1wiKTtcbkBpbmNsdWRlIF9hc3NlcnQtc3RhcnRzLWF0LXplcm8oJGdyaWQtYnJlYWtwb2ludHMsIFwiJGdyaWQtYnJlYWtwb2ludHNcIik7XG5cblxuLy8gR3JpZCBjb250YWluZXJzXG4vL1xuLy8gRGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGAuY29udGFpbmVyYCBmb3IgZGlmZmVyZW50IHNjcmVlbiBzaXplcy5cblxuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHhcbikgIWRlZmF1bHQ7XG5cbkBpbmNsdWRlIF9hc3NlcnQtYXNjZW5kaW5nKCRjb250YWluZXItbWF4LXdpZHRocywgXCIkY29udGFpbmVyLW1heC13aWR0aHNcIik7XG5cblxuLy8gR3JpZCBjb2x1bW5zXG4vL1xuLy8gU2V0IHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbmQgc3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIGd1dHRlcnMuXG5cbiRncmlkLWNvbHVtbnM6ICAgICAgICAgICAgICAgIDEyICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoOiAgICAgICAgICAgMzBweCAhZGVmYXVsdDtcbiRncmlkLXJvdy1jb2x1bW5zOiAgICAgICAgICAgIDYgIWRlZmF1bHQ7XG5cblxuLy8gQ29tcG9uZW50c1xuLy9cbi8vIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS5cblxuJGxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgMS41ICFkZWZhdWx0O1xuJGxpbmUtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgMS41ICFkZWZhdWx0O1xuXG4kYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAxcHggIWRlZmF1bHQ7XG4kYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgIC4zcmVtICFkZWZhdWx0O1xuJGJvcmRlci1yYWRpdXMtc206ICAgICAgICAgICAgLjJyZW0gIWRlZmF1bHQ7XG5cbiRyb3VuZGVkLXBpbGw6ICAgICAgICAgICAgICAgIDUwcmVtICFkZWZhdWx0O1xuXG4kYm94LXNoYWRvdy1zbTogICAgICAgICAgICAgICAwIC4xMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiRib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywgLjE1KSAhZGVmYXVsdDtcbiRib3gtc2hhZG93LWxnOiAgICAgICAgICAgICAgIDAgMXJlbSAzcmVtIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcblxuJGNvbXBvbmVudC1hY3RpdmUtY29sb3I6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGNvbXBvbmVudC1hY3RpdmUtYmc6ICAgICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuXG4kY2FyZXQtd2lkdGg6ICAgICAgICAgICAgICAgICAuM2VtICFkZWZhdWx0O1xuJGNhcmV0LXZlcnRpY2FsLWFsaWduOiAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xuJGNhcmV0LXNwYWNpbmc6ICAgICAgICAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbi1iYXNlOiAgICAgICAgICAgICBhbGwgLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuJHRyYW5zaXRpb24tZmFkZTogICAgICAgICAgICAgb3BhY2l0eSAuMTVzIGxpbmVhciAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWNvbGxhcHNlOiAgICAgICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XG5cbiRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpb3M6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpb3M6IGpvaW4oXG4gIChcbiAgICAoMjEgOSksXG4gICAgKDE2IDkpLFxuICAgICg0IDMpLFxuICAgICgxIDEpLFxuICApLFxuICAkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW9zXG4pO1xuXG4vLyBUeXBvZ3JhcGh5XG4vL1xuLy8gRm9udCwgbGluZS1oZWlnaHQsIGFuZCBjb2xvciBmb3IgYm9keSB0ZXh0LCBoZWFkaW5ncywgYW5kIG1vcmUuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHZhbHVlLWtleXdvcmQtY2FzZVxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICAgICAgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgXCJOb3RvIFNhbnNcIiwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogICAgICAgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1iYXNlOiAgICAgICAgICAgICRmb250LWZhbWlseS1zYW5zLXNlcmlmICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWVuYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcblxuJGZvbnQtc2l6ZS1iYXNlOiAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDsgLy8gQXNzdW1lcyB0aGUgYnJvd3NlciBkZWZhdWx0LCB0eXBpY2FsbHkgYDE2cHhgXG4kZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1zbTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogLjg3NSAhZGVmYXVsdDtcblxuJGZvbnQtd2VpZ2h0LWxpZ2h0ZXI6ICAgICAgICAgbGlnaHRlciAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1saWdodDogICAgICAgICAgIDMwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ub3JtYWw6ICAgICAgICAgIDQwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ib2xkOiAgICAgICAgICAgIDcwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ib2xkZXI6ICAgICAgICAgIGJvbGRlciAhZGVmYXVsdDtcblxuJGZvbnQtd2VpZ2h0LWJhc2U6ICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1iYXNlOiAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcblxuJGgxLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMi41ICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMiAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNzUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjUgIWRlZmF1bHQ7XG4kaDUtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGg2LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuXG4kaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTogICAgICAkc3BhY2VyIC8gMiAhZGVmYXVsdDtcbiRoZWFkaW5ncy1mb250LWZhbWlseTogICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC13ZWlnaHQ6ICAgICAgICA1MDAgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgICAgICAxLjIgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtY29sb3I6ICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kZGlzcGxheTEtc2l6ZTogICAgICAgICAgICAgICA2cmVtICFkZWZhdWx0O1xuJGRpc3BsYXkyLXNpemU6ICAgICAgICAgICAgICAgNS41cmVtICFkZWZhdWx0O1xuJGRpc3BsYXkzLXNpemU6ICAgICAgICAgICAgICAgNC41cmVtICFkZWZhdWx0O1xuJGRpc3BsYXk0LXNpemU6ICAgICAgICAgICAgICAgMy41cmVtICFkZWZhdWx0O1xuXG4kZGlzcGxheTEtd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTItd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTMtd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTQtd2VpZ2h0OiAgICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheS1saW5lLWhlaWdodDogICAgICAgICAkaGVhZGluZ3MtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRsZWFkLWZvbnQtc2l6ZTogICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG4kbGVhZC1mb250LXdlaWdodDogICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG5cbiRzbWFsbC1mb250LXNpemU6ICAgICAgICAgICAgIDgwJSAhZGVmYXVsdDtcblxuJHRleHQtbXV0ZWQ6ICAgICAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYmxvY2txdW90ZS1zbWFsbC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kYmxvY2txdW90ZS1zbWFsbC1mb250LXNpemU6ICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtZm9udC1zaXplOiAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcblxuJGhyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcbiRoci1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG5cbiRtYXJrLXBhZGRpbmc6ICAgICAgICAgICAgICAgIC4yZW0gIWRlZmF1bHQ7XG5cbiRkdC1mb250LXdlaWdodDogICAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4ka2JkLWJveC1zaGFkb3c6ICAgICAgICAgICAgICBpbnNldCAwIC0uMXJlbSAwIHJnYmEoJGJsYWNrLCAuMjUpICFkZWZhdWx0O1xuJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ6ICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbiRsaXN0LWlubGluZS1wYWRkaW5nOiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbWFyay1iZzogICAgICAgICAgICAgICAgICAgICAjZmNmOGUzICFkZWZhdWx0O1xuXG4kaHItbWFyZ2luLXk6ICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xuXG5cbi8vIFRhYmxlc1xuLy9cbi8vIEN1c3RvbWl6ZXMgdGhlIGAudGFibGVgIGNvbXBvbmVudCB3aXRoIGJhc2ljIHZhbHVlcywgZWFjaCB1c2VkIGFjcm9zcyBhbGwgdGFibGUgdmFyaWF0aW9ucy5cblxuJHRhYmxlLWNlbGwtcGFkZGluZzogICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy1zbTogICAgICAgLjNyZW0gIWRlZmF1bHQ7XG5cbiR0YWJsZS1jb2xvcjogICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWJnOiAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiR0YWJsZS1hY2NlbnQtYmc6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDUpICFkZWZhdWx0O1xuJHRhYmxlLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJHRhYmxlLWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWhvdmVyLWJnOiAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuJHRhYmxlLWFjdGl2ZS1iZzogICAgICAgICAgICAgJHRhYmxlLWhvdmVyLWJnICFkZWZhdWx0O1xuXG4kdGFibGUtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgJGJvcmRlci1jb2xvciAhZGVmYXVsdDtcblxuJHRhYmxlLWhlYWQtYmc6ICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHRhYmxlLWhlYWQtY29sb3I6ICAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuXG4kdGFibGUtZGFyay1jb2xvcjogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1iZzogICAgICAgICAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1hY2NlbnQtYmc6ICAgICAgICByZ2JhKCR3aGl0ZSwgLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1kYXJrLWhvdmVyLWNvbG9yOiAgICAgICR0YWJsZS1kYXJrLWNvbG9yICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstaG92ZXItYmc6ICAgICAgICAgcmdiYSgkd2hpdGUsIC4wNzUpICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstYm9yZGVyLWNvbG9yOiAgICAgbGlnaHRlbigkdGFibGUtZGFyay1iZywgNy41JSkgIWRlZmF1bHQ7XG5cbiR0YWJsZS1zdHJpcGVkLW9yZGVyOiAgICAgICAgIG9kZCAhZGVmYXVsdDtcblxuJHRhYmxlLWNhcHRpb24tY29sb3I6ICAgICAgICAgJHRleHQtbXV0ZWQgIWRlZmF1bHQ7XG5cbiR0YWJsZS1iZy1sZXZlbDogICAgICAgICAgICAgIC05ICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1sZXZlbDogICAgICAgICAgLTYgIWRlZmF1bHQ7XG5cblxuLy8gQnV0dG9ucyArIEZvcm1zXG4vL1xuLy8gU2hhcmVkIHZhcmlhYmxlcyB0aGF0IGFyZSByZWFzc2lnbmVkIHRvIGAkaW5wdXQtYCBhbmQgYCRidG4tYCBzcGVjaWZpYyB2YXJpYWJsZXMuXG5cbiRpbnB1dC1idG4tcGFkZGluZy15OiAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteDogICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtZmFtaWx5OiAgICAgICBudWxsICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemU6ICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodDogICAgICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tZm9jdXMtd2lkdGg6ICAgICAgIC4ycmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb2N1cy1jb2xvcjogICAgICAgcmdiYSgkY29tcG9uZW50LWFjdGl2ZS1iZywgLjI1KSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdzogIDAgMCAwICRpbnB1dC1idG4tZm9jdXMtd2lkdGggJGlucHV0LWJ0bi1mb2N1cy1jb2xvciAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1wYWRkaW5nLXktc206ICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXgtc206ICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbTogICAgICAkZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodC1zbTogICAgJGxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLXBhZGRpbmcteS1sZzogICAgICAuNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14LWxnOiAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZzogICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodC1sZzogICAgJGxpbmUtaGVpZ2h0LWxnICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLWJvcmRlci13aWR0aDogICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCwgYW5kIGJvcmRlciBjb2xvci5cblxuJGJ0bi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kYnRuLXBhZGRpbmcteDogICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRidG4tZm9udC1mYW1pbHk6ICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQ6ICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kYnRuLXdoaXRlLXNwYWNlOiAgICAgICAgICAgICBudWxsICFkZWZhdWx0OyAvLyBTZXQgdG8gYG5vd3JhcGAgdG8gcHJldmVudCB0ZXh0IHdyYXBwaW5nXG5cbiRidG4tcGFkZGluZy15LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LXNtICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXgtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1zbTogICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQtc206ICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtc20gIWRlZmF1bHQ7XG5cbiRidG4tcGFkZGluZy15LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kYnRuLWZvbnQtc2l6ZS1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRidG4tbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcgIWRlZmF1bHQ7XG5cbiRidG4tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kYnRuLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAkZm9udC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuJGJ0bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgaW5zZXQgMCAxcHggMCByZ2JhKCR3aGl0ZSwgLjE1KSwgMCAxcHggMXB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiRidG4tZm9jdXMtd2lkdGg6ICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtd2lkdGggIWRlZmF1bHQ7XG4kYnRuLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kYnRuLWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAuNjUgIWRlZmF1bHQ7XG4kYnRuLWFjdGl2ZS1ib3gtc2hhZG93OiAgICAgICBpbnNldCAwIDNweCA1cHggcmdiYSgkYmxhY2ssIC4xMjUpICFkZWZhdWx0O1xuXG4kYnRuLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRidG4tYmxvY2stc3BhY2luZy15OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4vLyBBbGxvd3MgZm9yIGN1c3RvbWl6aW5nIGJ1dHRvbiByYWRpdXMgaW5kZXBlbmRlbnRseSBmcm9tIGdsb2JhbCBib3JkZXIgcmFkaXVzXG4kYnRuLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJGJ0bi1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XG5cbiRidG4tdHJhbnNpdGlvbjogICAgICAgICAgICAgIGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuXG4vLyBGb3Jtc1xuXG4kbGFiZWwtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRpbnB1dC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteCAhZGVmYXVsdDtcbiRpbnB1dC1mb250LWZhbWlseTogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1iYXNlICFkZWZhdWx0O1xuJGlucHV0LWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRpbnB1dC1wYWRkaW5nLXktc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXgtc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1zbSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXNpemUtc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRpbnB1dC1saW5lLWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15LWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14LWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodC1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRpbnB1dC1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG5cbiRpbnB1dC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGdyYXktNDAwICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgICAgIGluc2V0IDAgMXB4IDFweCByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG5cbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcblxuJGlucHV0LWZvY3VzLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICBsaWdodGVuKCRjb21wb25lbnQtYWN0aXZlLWJnLCAyNSUpICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy13aWR0aDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGlucHV0LWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRpbnB1dC1wbGFpbnRleHQtY29sb3I6ICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1ib3JkZXI6ICAgICAgICAgICAgICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggKiAyICFkZWZhdWx0O1xuXG4kaW5wdXQtaGVpZ2h0LWlubmVyOiAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIDFlbSwgJGlucHV0LXBhZGRpbmcteSAqIDIpICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodC1pbm5lci1oYWxmOiAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAuNWVtLCAkaW5wdXQtcGFkZGluZy15KSAhZGVmYXVsdDtcbiRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlcjogICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogLjI1ZW0sICRpbnB1dC1wYWRkaW5nLXkgLyAyKSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodDogICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15ICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodC1zbSAqIDFlbSwgYWRkKCRpbnB1dC1wYWRkaW5nLXktc20gKiAyLCAkaW5wdXQtaGVpZ2h0LWJvcmRlciwgZmFsc2UpKSAhZGVmYXVsdDtcbiRpbnB1dC1oZWlnaHQtbGc6ICAgICAgICAgICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0LWxnICogMWVtLCBhZGQoJGlucHV0LXBhZGRpbmcteS1sZyAqIDIsICRpbnB1dC1oZWlnaHQtYm9yZGVyLCBmYWxzZSkpICFkZWZhdWx0O1xuXG4kaW5wdXQtdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuJGZvcm0tdGV4dC1tYXJnaW4tdG9wOiAgICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tY2hlY2staW5wdXQtZ3V0dGVyOiAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teTogICAgICAgICAgICAgLjNyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teDogICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbmxpbmUtbWFyZ2luLXg6ICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5saW5lLWlucHV0LW1hcmdpbi14OiAgICAgIC4zMTI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1ncmlkLWd1dHRlci13aWR0aDogICAgICAgICAgICAgICAgMTBweCAhZGVmYXVsdDtcbiRmb3JtLWdyb3VwLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuXG4kaW5wdXQtZ3JvdXAtYWRkb24tY29sb3I6ICAgICAgICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I6ICAgICAgICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuXG4kY3VzdG9tLWZvcm1zLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtZ3V0dGVyOiAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtc3BhY2VyLXg6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1jdXJzb3I6ICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU6ICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmctc2l6ZTogICAgICA1MCUgNTAlICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3gtc2hhZG93OiAgICRpbnB1dC1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItY29sb3I6ICRncmF5LTUwMCAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLXdpZHRoOiAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtbGFiZWwtY29sb3I6ICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1kaXNhYmxlZC1iZzogICAgICAgICAgJGlucHV0LWRpc2FibGVkLWJnICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWxhYmVsLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3I6ICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1iZzogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWRpc2FibGVkLWJnOiAgcmdiYSh0aGVtZS1jb2xvcihcInByaW1hcnlcIiksIC41KSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93OiAgIG5vbmUgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYmcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZm9jdXMtYm94LXNoYWRvdzogICAgICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1mb2N1cy1ib3JkZXItY29sb3I6ICAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtY29sb3I6ICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1iZzogICAgICAgICAgICBsaWdodGVuKCRjb21wb25lbnQtYWN0aXZlLWJnLCAzNSUpICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYm94LXNoYWRvdzogICAgbm9uZSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJvcmRlci1jb2xvcjogICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZDogICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9JyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjZsMi45NzQgMi45OUw4IDIuMTkzeicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZzogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1jb2xvcjogICAgICAgICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24taW5kZXRlcm1pbmF0ZTogICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc0JyBoZWlnaHQ9JzQnIHZpZXdCb3g9JzAgMCA0IDQnPjxwYXRoIHN0cm9rZT0nI3skY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWNvbG9yfScgZD0nTTAgMmg0Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1ib3gtc2hhZG93OiAgIG5vbmUgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvcjogJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1yYWRpby1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1czogICAgICAgICAgNTAlICFkZWZhdWx0O1xuJGN1c3RvbS1yYWRpby1pbmRpY2F0b3ItaWNvbi1jaGVja2VkOiAgICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIHZpZXdCb3g9Jy00IC00IDggOCc+PGNpcmNsZSByPSczJyBmaWxsPScjeyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvcn0nLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc3dpdGNoLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSAqIDEuNzUgIWRlZmF1bHQ7XG4kY3VzdG9tLXN3aXRjaC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1czogICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUgLyAyICFkZWZhdWx0O1xuJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLXNpemU6ICAgICAgICAgICAgICAgICAgc3VidHJhY3QoJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplLCAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci13aWR0aCAqIDQpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXk6ICAgICAgICAgICAkaW5wdXQtcGFkZGluZy15ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvbnQtZmFtaWx5OiAgICAgICAgICRpbnB1dC1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZTogICAgICAgICAgICRpbnB1dC1mb250LXNpemUgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1oZWlnaHQ6ICAgICAgICAgICAgICAkaW5wdXQtaGVpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmc6ICAgMXJlbSAhZGVmYXVsdDsgLy8gRXh0cmEgcGFkZGluZyB0byBhY2NvdW50IGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGJhY2tncm91bmQtaW1hZ2UgYmFzZWQgaW5kaWNhdG9yXG4kY3VzdG9tLXNlbGVjdC1mb250LXdlaWdodDogICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1saW5lLWhlaWdodDogICAgICAgICAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1jb2xvcjogICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1iZzogICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1iZzogICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1iZy1zaXplOiAgICAgICAgICAgICA4cHggMTBweCAhZGVmYXVsdDsgLy8gSW4gcGl4ZWxzIGJlY2F1c2UgaW1hZ2UgZGltZW5zaW9uc1xuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yOiAgICAgJGdyYXktODAwICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yOiAgICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc1JyB2aWV3Qm94PScwIDAgNCA1Jz48cGF0aCBmaWxsPScjeyRjdXN0b20tc2VsZWN0LWluZGljYXRvci1jb2xvcn0nIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1iYWNrZ3JvdW5kOiAgICAgICAgICBlc2NhcGUtc3ZnKCRjdXN0b20tc2VsZWN0LWluZGljYXRvcikgbm8tcmVwZWF0IHJpZ2h0ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteCBjZW50ZXIgLyAkY3VzdG9tLXNlbGVjdC1iZy1zaXplICFkZWZhdWx0OyAvLyBVc2VkIHNvIHdlIGNhbiBoYXZlIG11bHRpcGxlIGJhY2tncm91bmQgZWxlbWVudHMgKGUuZy4sIGFycm93IGFuZCBmZWVkYmFjayBpY29uKVxuXG4kY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBhZGRpbmctcmlnaHQ6IGFkZCgxZW0gKiAuNzUsICgyICogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICogLjc1KSArICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteCArICRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nKSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZlZWRiYWNrLWljb24tcG9zaXRpb246ICAgICAgY2VudGVyIHJpZ2h0ICgkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXNpemU6ICAgICAgICAgICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aDogICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1ib3JkZXItY29sb3I6ICAgICAgICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm9yZGVyLXJhZGl1czogICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1ib3gtc2hhZG93OiAgICAgICAgICBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3JkZXItY29sb3I6ICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9jdXMtd2lkdGg6ICAgICAgICAgJGlucHV0LWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdzogICAgMCAwIDAgJGN1c3RvbS1zZWxlY3QtZm9jdXMtd2lkdGggJGlucHV0LWJ0bi1mb2N1cy1jb2xvciAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LXNtOiAgICAgICAgJGlucHV0LXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1zbTogICAgICAgICRpbnB1dC1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LXNpemUtc206ICAgICAgICAkaW5wdXQtZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LXNtOiAgICAgICAgICAgJGlucHV0LWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LWxnOiAgICAgICAgJGlucHV0LXBhZGRpbmcteS1sZyAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LXNpemUtbGc6ICAgICAgICAkaW5wdXQtZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LWxnOiAgICAgICAgICAgJGlucHV0LWhlaWdodC1sZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1yYW5nZS10cmFjay13aWR0aDogICAgICAgICAgMTAwJSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2staGVpZ2h0OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10cmFjay1jdXJzb3I6ICAgICAgICAgcG9pbnRlciAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2stYmc6ICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2stYm9yZGVyLXJhZGl1czogIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWJveC1zaGFkb3c6ICAgICBpbnNldCAwIC4yNXJlbSAuMjVyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1yYW5nZS10aHVtYi13aWR0aDogICAgICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItaGVpZ2h0OiAgICAgICAgICAgICAgICAgICRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGggIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWJnOiAgICAgICAgICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyOiAgICAgICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgMCAuMXJlbSAuMjVyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzogICAgICAgIDAgMCAwIDFweCAkYm9keS1iZywgJGlucHV0LWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGg6ICAkaW5wdXQtZm9jdXMtd2lkdGggIWRlZmF1bHQ7IC8vIEZvciBmb2N1cyBib3ggc2hhZG93IGlzc3VlIGluIElFL0VkZ2VcbiRjdXN0b20tcmFuZ2UtdGh1bWItYWN0aXZlLWJnOiAgICAgICAgICAgICAgIGxpZ2h0ZW4oJGNvbXBvbmVudC1hY3RpdmUtYmcsIDM1JSkgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWRpc2FibGVkLWJnOiAgICAgICAgICAgICAkZ3JheS01MDAgIWRlZmF1bHQ7XG5cbiRjdXN0b20tZmlsZS1oZWlnaHQ6ICAgICAgICAgICAgICAgICRpbnB1dC1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtaGVpZ2h0LWlubmVyOiAgICAgICAgICAkaW5wdXQtaGVpZ2h0LWlubmVyICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWZvY3VzLWJvcmRlci1jb2xvcjogICAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb2N1cy1ib3gtc2hhZG93OiAgICAgICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWRpc2FibGVkLWJnOiAgICAgICAgICAgJGlucHV0LWRpc2FibGVkLWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWZpbGUtcGFkZGluZy15OiAgICAgICAgICAgICAkaW5wdXQtcGFkZGluZy15ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLXBhZGRpbmcteDogICAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1saW5lLWhlaWdodDogICAgICAgICAgICRpbnB1dC1saW5lLWhlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb250LWZhbWlseTogICAgICAgICAgICRpbnB1dC1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb250LXdlaWdodDogICAgICAgICAgICRpbnB1dC1mb250LXdlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1jb2xvcjogICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1iZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGg6ICAgICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgJGlucHV0LWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYm94LXNoYWRvdzogICAgICAgICAgICAkaW5wdXQtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1idXR0b24tY29sb3I6ICAgICAgICAgICRjdXN0b20tZmlsZS1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1idXR0b24tYmc6ICAgICAgICAgICAgICRpbnB1dC1ncm91cC1hZGRvbi1iZyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS10ZXh0OiAoXG4gIGVuOiBcIkJyb3dzZVwiXG4pICFkZWZhdWx0O1xuXG5cbi8vIEZvcm0gdmFsaWRhdGlvblxuXG4kZm9ybS1mZWVkYmFjay1tYXJnaW4tdG9wOiAgICAgICAgICAkZm9ybS10ZXh0LW1hcmdpbi10b3AgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1mb250LXNpemU6ICAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3I6ICAgICAgICAgdGhlbWUtY29sb3IoXCJzdWNjZXNzXCIpICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcjogICAgICAgdGhlbWUtY29sb3IoXCJkYW5nZXJcIikgIWRlZmF1bHQ7XG5cbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQtY29sb3I6ICAgICRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZDogICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4Jz48cGF0aCBmaWxsPScjeyRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQtY29sb3J9JyBkPSdNMi4zIDYuNzNMLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yOiAgJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZDogICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyBmaWxsPSdub25lJyBzdHJva2U9JyN7JGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yfScgdmlld0JveD0nMCAwIDEyIDEyJz48Y2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8+PHBhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8+PGNpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyN7JGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yfScgc3Ryb2tlPSdub25lJy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kZm9ybS12YWxpZGF0aW9uLXN0YXRlczogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXM6IG1hcC1tZXJnZShcbiAgKFxuICAgIFwidmFsaWRcIjogKFxuICAgICAgXCJjb2xvclwiOiAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvcixcbiAgICAgIFwiaWNvblwiOiAkZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkXG4gICAgKSxcbiAgICBcImludmFsaWRcIjogKFxuICAgICAgXCJjb2xvclwiOiAkZm9ybS1mZWVkYmFjay1pbnZhbGlkLWNvbG9yLFxuICAgICAgXCJpY29uXCI6ICRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZFxuICAgICksXG4gICksXG4gICRmb3JtLXZhbGlkYXRpb24tc3RhdGVzXG4pO1xuXG4vLyBaLWluZGV4IG1hc3RlciBsaXN0XG4vL1xuLy8gV2FybmluZzogQXZvaWQgY3VzdG9taXppbmcgdGhlc2UgdmFsdWVzLiBUaGV5J3JlIHVzZWQgZm9yIGEgYmlyZCdzIGV5ZSB2aWV3XG4vLyBvZiBjb21wb25lbnRzIGRlcGVuZGVudCBvbiB0aGUgei1heGlzIGFuZCBhcmUgZGVzaWduZWQgdG8gYWxsIHdvcmsgdG9nZXRoZXIuXG5cbiR6aW5kZXgtZHJvcGRvd246ICAgICAgICAgICAgICAgICAgIDEwMDAgIWRlZmF1bHQ7XG4kemluZGV4LXN0aWNreTogICAgICAgICAgICAgICAgICAgICAxMDIwICFkZWZhdWx0O1xuJHppbmRleC1maXhlZDogICAgICAgICAgICAgICAgICAgICAgMTAzMCAhZGVmYXVsdDtcbiR6aW5kZXgtbW9kYWwtYmFja2Ryb3A6ICAgICAgICAgICAgIDEwNDAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsOiAgICAgICAgICAgICAgICAgICAgICAxMDUwICFkZWZhdWx0O1xuJHppbmRleC1wb3BvdmVyOiAgICAgICAgICAgICAgICAgICAgMTA2MCAhZGVmYXVsdDtcbiR6aW5kZXgtdG9vbHRpcDogICAgICAgICAgICAgICAgICAgIDEwNzAgIWRlZmF1bHQ7XG5cblxuLy8gTmF2c1xuXG4kbmF2LWxpbmstcGFkZGluZy15OiAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRuYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbmF2LWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRuYXYtdGFicy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiRuYXYtdGFicy1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbmF2LXRhYnMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICRncmF5LTIwMCAkZ3JheS0yMDAgJG5hdi10YWJzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgICRncmF5LTcwMCAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvcjogJGdyYXktMzAwICRncmF5LTMwMCAkbmF2LXRhYnMtbGluay1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJG5hdi1waWxscy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJG5hdi1kaXZpZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJG5hdi1kaXZpZGVyLW1hcmdpbi15OiAgICAgICAgICAgICAgJHNwYWNlciAvIDIgIWRlZmF1bHQ7XG5cblxuLy8gTmF2YmFyXG5cbiRuYXZiYXItcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICRzcGFjZXIgLyAyICFkZWZhdWx0O1xuJG5hdmJhci1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcblxuJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRuYXZiYXItYnJhbmQtZm9udC1zaXplOiAgICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4vLyBDb21wdXRlIHRoZSBuYXZiYXItYnJhbmQgcGFkZGluZy15IHNvIHRoZSBuYXZiYXItYnJhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBuYXZiYXItdGV4dCBhbmQgbmF2LWxpbmtcbiRuYXYtbGluay1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlICsgJG5hdi1saW5rLXBhZGRpbmcteSAqIDIgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLWhlaWdodDogICAgICAgICAgICAgICAkbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZSAqICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuJG5hdmJhci1icmFuZC1wYWRkaW5nLXk6ICAgICAgICAgICAgKCRuYXYtbGluay1oZWlnaHQgLSAkbmF2YmFyLWJyYW5kLWhlaWdodCkgLyAyICFkZWZhdWx0O1xuXG4kbmF2YmFyLXRvZ2dsZXItcGFkZGluZy15OiAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14OiAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItZm9udC1zaXplOiAgICAgICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLWJvcmRlci1yYWRpdXM6ICAgICAgJGJ0bi1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kbmF2YmFyLWRhcmstY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWhvdmVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgkd2hpdGUsIC43NSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yOiAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I6ICAgICAgICByZ2JhKCR3aGl0ZSwgLjI1KSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmc6ICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzMwJyBoZWlnaHQ9JzMwJyB2aWV3Qm94PScwIDAgMzAgMzAnPjxwYXRoIHN0cm9rZT0nI3skbmF2YmFyLWRhcmstY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjogIHJnYmEoJHdoaXRlLCAuMSkgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbGlnaHQtY29sb3I6ICAgICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWhvdmVyLWNvbG9yOiAgICAgICAgICByZ2JhKCRibGFjaywgLjcpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I6ICAgICAgICAgcmdiYSgkYmxhY2ssIC45KSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtZGlzYWJsZWQtY29sb3I6ICAgICAgIHJnYmEoJGJsYWNrLCAuMykgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LXRvZ2dsZXItaWNvbi1iZzogICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJz48cGF0aCBzdHJva2U9JyN7JG5hdmJhci1saWdodC1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjogcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcblxuJG5hdmJhci1saWdodC1icmFuZC1jb2xvcjogICAgICAgICAgICAgICAgJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgICAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1icmFuZC1jb2xvcjogICAgICAgICAgICAgICAgICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYnJhbmQtaG92ZXItY29sb3I6ICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuXG5cbi8vIERyb3Bkb3duc1xuLy9cbi8vIERyb3Bkb3duIG1lbnUgY29udGFpbmVyIGFuZCBjb250ZW50cy5cblxuJGRyb3Bkb3duLW1pbi13aWR0aDogICAgICAgICAgICAgICAgMTByZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tcGFkZGluZy15OiAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zcGFjZXI6ICAgICAgICAgICAgICAgICAgIC4xMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kZHJvcGRvd24tY29sb3I6ICAgICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1iZzogICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItY29sb3I6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMTUpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgc3VidHJhY3QoJGRyb3Bkb3duLWJvcmRlci1yYWRpdXMsICRkcm9wZG93bi1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRpdmlkZXItYmc6ICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXk6ICAgICAgICAgJG5hdi1kaXZpZGVyLW1hcmdpbi15ICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgMCAuNXJlbSAxcmVtIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgZGFya2VuKCRncmF5LTkwMCwgNSUpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItYmc6ICAgICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteTogICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDogICAgICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG5cbi8vIFBhZ2luYXRpb25cblxuJHBhZ2luYXRpb24tcGFkZGluZy15OiAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXktc206ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXgtc206ICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1sZzogICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteC1sZzogICAgICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgIDEuMjUgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICRsaW5rLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcjogICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdzogICAgICAgJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tZm9jdXMtb3V0bGluZTogICAgICAgICAgMCAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24taG92ZXItY29sb3I6ICAgICAgICAgICAgJGxpbmstaG92ZXItY29sb3IgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1ob3Zlci1iZzogICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXItY29sb3I6ICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJnOiAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAkcGFnaW5hdGlvbi1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWRpc2FibGVkLWJnOiAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWRpc2FibGVkLWJvcmRlci1jb2xvcjogICRncmF5LTMwMCAhZGVmYXVsdDtcblxuXG4vLyBKdW1ib3Ryb25cblxuJGp1bWJvdHJvbi1wYWRkaW5nOiAgICAgICAgICAgICAgICAgMnJlbSAhZGVmYXVsdDtcbiRqdW1ib3Ryb24tY29sb3I6ICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kanVtYm90cm9uLWJnOiAgICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG5cblxuLy8gQ2FyZHNcblxuJGNhcmQtc3BhY2VyLXk6ICAgICAgICAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGNhcmQtc3BhY2VyLXg6ICAgICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcbiRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIHN1YnRyYWN0KCRjYXJkLWJvcmRlci1yYWRpdXMsICRjYXJkLWJvcmRlci13aWR0aCkgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtYmc6ICAgICAgICAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjAzKSAhZGVmYXVsdDtcbiRjYXJkLWNhcC1jb2xvcjogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kY2FyZC1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcblxuJGNhcmQtaW1nLW92ZXJsYXktcGFkZGluZzogICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcblxuJGNhcmQtZ3JvdXAtbWFyZ2luOiAgICAgICAgICAgICAgICAgJGdyaWQtZ3V0dGVyLXdpZHRoIC8gMiAhZGVmYXVsdDtcbiRjYXJkLWRlY2stbWFyZ2luOiAgICAgICAgICAgICAgICAgICRjYXJkLWdyb3VwLW1hcmdpbiAhZGVmYXVsdDtcblxuJGNhcmQtY29sdW1ucy1jb3VudDogICAgICAgICAgICAgICAgMyAhZGVmYXVsdDtcbiRjYXJkLWNvbHVtbnMtZ2FwOiAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1jb2x1bW5zLW1hcmdpbjogICAgICAgICAgICAgICAkY2FyZC1zcGFjZXIteSAhZGVmYXVsdDtcblxuXG4vLyBUb29sdGlwc1xuXG4kdG9vbHRpcC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAkZm9udC1zaXplLXNtICFkZWZhdWx0O1xuJHRvb2x0aXAtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgMjAwcHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kdG9vbHRpcC1iZzogICAgICAgICAgICAgICAgICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiR0b29sdGlwLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgIC45ICFkZWZhdWx0O1xuJHRvb2x0aXAtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kdG9vbHRpcC1tYXJnaW46ICAgICAgICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuXG4kdG9vbHRpcC1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAuOHJlbSAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWhlaWdodDogICAgICAgICAgICAgIC40cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgJHRvb2x0aXAtYmcgIWRlZmF1bHQ7XG5cbi8vIEZvcm0gdG9vbHRpcHMgbXVzdCBjb21lIGFmdGVyIHJlZ3VsYXIgdG9vbHRpcHNcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy15OiAgICAgJHRvb2x0aXAtcGFkZGluZy15ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1wYWRkaW5nLXg6ICAgICAkdG9vbHRpcC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWZvbnQtc2l6ZTogICAgICR0b29sdGlwLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtbGluZS1oZWlnaHQ6ICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLW9wYWNpdHk6ICAgICAgICR0b29sdGlwLW9wYWNpdHkgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWJvcmRlci1yYWRpdXM6ICR0b29sdGlwLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG5cblxuLy8gUG9wb3ZlcnNcblxuJHBvcG92ZXItZm9udC1zaXplOiAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwb3BvdmVyLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDI3NnB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMikgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRwb3BvdmVyLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgIHN1YnRyYWN0KCRwb3BvdmVyLWJvcmRlci1yYWRpdXMsICRwb3BvdmVyLWJvcmRlci13aWR0aCkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAwIC4yNXJlbSAuNXJlbSByZ2JhKCRibGFjaywgLjIpICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1oZWFkZXItYmc6ICAgICAgICAgICAgICAgICBkYXJrZW4oJHBvcG92ZXItYmcsIDMlKSAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICRoZWFkaW5ncy1jb2xvciAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteDogICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1ib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvZHktcGFkZGluZy15OiAgICAgICAgICAgICRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteDogICAgICAgICAgICAkcG9wb3Zlci1oZWFkZXItcGFkZGluZy14ICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctaGVpZ2h0OiAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAkcG9wb3Zlci1iZyAhZGVmYXVsdDtcblxuJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I6ICAgICAgICAgZmFkZS1pbigkcG9wb3Zlci1ib3JkZXItY29sb3IsIC4wNSkgIWRlZmF1bHQ7XG5cblxuLy8gVG9hc3RzXG5cbiR0b2FzdC1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAgIDM1MHB4ICFkZWZhdWx0O1xuJHRvYXN0LXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHRvYXN0LXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRvYXN0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgLjg3NXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kdG9hc3QtYmFja2dyb3VuZC1jb2xvcjogICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjg1KSAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgIDFweCAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgIHJnYmEoMCwgMCwgMCwgLjEpICFkZWZhdWx0O1xuJHRvYXN0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRvYXN0LWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgMCAuMjVyZW0gLjc1cmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG5cbiR0b2FzdC1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiR0b2FzdC1oZWFkZXItYmFja2dyb3VuZC1jb2xvcjogICAgIHJnYmEoJHdoaXRlLCAuODUpICFkZWZhdWx0O1xuJHRvYXN0LWhlYWRlci1ib3JkZXItY29sb3I6ICAgICAgICAgcmdiYSgwLCAwLCAwLCAuMDUpICFkZWZhdWx0O1xuXG5cbi8vIEJhZGdlc1xuXG4kYmFkZ2UtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICA3NSUgIWRlZmF1bHQ7XG4kYmFkZ2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgIC4yNWVtICFkZWZhdWx0O1xuJGJhZGdlLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgLjRlbSAhZGVmYXVsdDtcbiRiYWRnZS1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kYmFkZ2UtdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICAkYnRuLXRyYW5zaXRpb24gIWRlZmF1bHQ7XG4kYmFkZ2UtZm9jdXMtd2lkdGg6ICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuXG4kYmFkZ2UtcGlsbC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAuNmVtICFkZWZhdWx0O1xuLy8gVXNlIGEgaGlnaGVyIHRoYW4gbm9ybWFsIHZhbHVlIHRvIGVuc3VyZSBjb21wbGV0ZWx5IHJvdW5kZWQgZWRnZXMgd2hlblxuLy8gY3VzdG9taXppbmcgcGFkZGluZyBvciBmb250LXNpemUgb24gbGFiZWxzLlxuJGJhZGdlLXBpbGwtYm9yZGVyLXJhZGl1czogICAgICAgICAgMTByZW0gIWRlZmF1bHQ7XG5cblxuLy8gTW9kYWxzXG5cbi8vIFBhZGRpbmcgYXBwbGllZCB0byB0aGUgbW9kYWwgYm9keVxuJG1vZGFsLWlubmVyLXBhZGRpbmc6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcblxuLy8gTWFyZ2luIGJldHdlZW4gZWxlbWVudHMgaW4gZm9vdGVyLCBtdXN0IGJlIGxvd2VyIHRoYW4gb3IgZXF1YWwgdG8gMiAqICRtb2RhbC1pbm5lci1wYWRkaW5nXG4kbW9kYWwtZm9vdGVyLW1hcmdpbi1iZXR3ZWVuOiAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuJG1vZGFsLWRpYWxvZy1tYXJnaW46ICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwOiAgICAgICAxLjc1cmVtICFkZWZhdWx0O1xuXG4kbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcblxuJG1vZGFsLWNvbnRlbnQtY29sb3I6ICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJnOiAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjogICAgICAgIHJnYmEoJGJsYWNrLCAuMikgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGg6ICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1czogICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzOiBzdWJ0cmFjdCgkbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzLCAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14czogICAgICAgMCAuMjVyZW0gLjVyZW0gcmdiYSgkYmxhY2ssIC41KSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3ctc20tdXA6ICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywgLjUpICFkZWZhdWx0O1xuXG4kbW9kYWwtYmFja2Ryb3AtYmc6ICAgICAgICAgICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XG4kbW9kYWwtYmFja2Ryb3Atb3BhY2l0eTogICAgICAgICAgICAuNSAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICRib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogICAgICAgICAkbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItcGFkZGluZy14OiAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLXBhZGRpbmc6ICAgICAgICAgICAgICAkbW9kYWwtaGVhZGVyLXBhZGRpbmcteSAkbW9kYWwtaGVhZGVyLXBhZGRpbmcteCAhZGVmYXVsdDsgLy8gS2VlcCB0aGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4kbW9kYWwteGw6ICAgICAgICAgICAgICAgICAgICAgICAgICAxMTQwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbGc6ICAgICAgICAgICAgICAgICAgICAgICAgICA4MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1tZDogICAgICAgICAgICAgICAgICAgICAgICAgIDUwMHB4ICFkZWZhdWx0O1xuJG1vZGFsLXNtOiAgICAgICAgICAgICAgICAgICAgICAgICAgMzAwcHggIWRlZmF1bHQ7XG5cbiRtb2RhbC1mYWRlLXRyYW5zZm9ybTogICAgICAgICAgICAgIHRyYW5zbGF0ZSgwLCAtNTBweCkgIWRlZmF1bHQ7XG4kbW9kYWwtc2hvdy10cmFuc2Zvcm06ICAgICAgICAgICAgICBub25lICFkZWZhdWx0O1xuJG1vZGFsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtIC4zcyBlYXNlLW91dCAhZGVmYXVsdDtcbiRtb2RhbC1zY2FsZS10cmFuc2Zvcm06ICAgICAgICAgICAgIHNjYWxlKDEuMDIpICFkZWZhdWx0O1xuXG5cbi8vIEFsZXJ0c1xuLy9cbi8vIERlZmluZSBhbGVydCBjb2xvcnMsIGJvcmRlciByYWRpdXMsIGFuZCBwYWRkaW5nLlxuXG4kYWxlcnQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGFsZXJ0LW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRhbGVydC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ6ICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kYWxlcnQtYmctbGV2ZWw6ICAgICAgICAgICAgICAgICAgICAtMTAgIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLWxldmVsOiAgICAgICAgICAgICAgICAtOSAhZGVmYXVsdDtcbiRhbGVydC1jb2xvci1sZXZlbDogICAgICAgICAgICAgICAgIDYgIWRlZmF1bHQ7XG5cblxuLy8gUHJvZ3Jlc3MgYmFyc1xuXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHByb2dyZXNzLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogLjc1ICFkZWZhdWx0O1xuJHByb2dyZXNzLWJnOiAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHByb2dyZXNzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYm94LXNoYWRvdzogICAgICAgICAgICAgICBpbnNldCAwIC4xcmVtIC4xcmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWNvbG9yOiAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWJnOiAgICAgICAgICAgICAgICAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi10aW1pbmc6ICAgICAxcyBsaW5lYXIgaW5maW5pdGUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb246ICAgICAgICAgICB3aWR0aCAuNnMgZWFzZSAhZGVmYXVsdDtcblxuXG4vLyBMaXN0IGdyb3VwXG5cbiRsaXN0LWdyb3VwLWNvbG9yOiAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1iZzogICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICAgICAgICAgICByZ2JhKCRibGFjaywgLjEyNSkgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1czogICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWl0ZW0tcGFkZGluZy15OiAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWl0ZW0tcGFkZGluZy14OiAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWhvdmVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAkbGlzdC1ncm91cC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWRpc2FibGVkLWJnOiAgICAgICAgICAgICRsaXN0LWdyb3VwLWJnICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1hY3Rpb24tY29sb3I6ICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6ICAgICAkbGlzdC1ncm91cC1hY3Rpb24tY29sb3IgIWRlZmF1bHQ7XG5cbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3I6ICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZzogICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIEltYWdlIHRodW1ibmFpbHNcblxuJHRodW1ibmFpbC1wYWRkaW5nOiAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci13aWR0aDogICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuXG5cbi8vIEZpZ3VyZXNcblxuJGZpZ3VyZS1jYXB0aW9uLWZvbnQtc2l6ZTogICAgICAgICAgOTAlICFkZWZhdWx0O1xuJGZpZ3VyZS1jYXB0aW9uLWNvbG9yOiAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG5cbi8vIEJyZWFkY3J1bWJzXG5cbiRicmVhZGNydW1iLWZvbnQtc2l6ZTogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLXBhZGRpbmcteTogICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLXBhZGRpbmcteDogICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1pdGVtLXBhZGRpbmc6ICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItbWFyZ2luLWJvdHRvbTogICAgICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjogICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItZGl2aWRlcjogICAgICAgICAgICAgICAgcXVvdGUoXCIvXCIpICFkZWZhdWx0O1xuXG4kYnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuXG4vLyBDYXJvdXNlbFxuXG4kY2Fyb3VzZWwtY29udHJvbC1jb2xvcjogICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgIDE1JSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk6ICAgICAgICAgICAuNSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLWhvdmVyLW9wYWNpdHk6ICAgICAuOSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLXRyYW5zaXRpb246ICAgICAgICBvcGFjaXR5IC4xNXMgZWFzZSAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWluZGljYXRvci13aWR0aDogICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWhlaWdodDogICAgICAgICAgM3B4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1oaXQtYXJlYS1oZWlnaHQ6IDEwcHggIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLXNwYWNlcjogICAgICAgICAgM3B4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItdHJhbnNpdGlvbjogICAgICBvcGFjaXR5IC42cyBlYXNlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY2FwdGlvbi13aWR0aDogICAgICAgICAgICAgNzAlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWNvbnRyb2wtaWNvbi13aWR0aDogICAgICAgIDIwcHggIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbi1iZzogICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9JyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4Jz48cGF0aCBkPSdNNS4yNSAwbC00IDQgNCA0IDEuNS0xLjVMNC4yNSA0bDIuNS0yLjVMNS4yNSAweicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbi1iZzogICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9JyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4Jz48cGF0aCBkPSdNMi43NSAwbC0xLjUgMS41TDMuNzUgNGwtMi41IDIuNUwyLjc1IDhsNC00LTQtNHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC10cmFuc2l0aW9uLWR1cmF0aW9uOiAgICAgICAuNnMgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgdHJhbnNmb3JtICRjYXJvdXNlbC10cmFuc2l0aW9uLWR1cmF0aW9uIGVhc2UtaW4tb3V0ICFkZWZhdWx0OyAvLyBEZWZpbmUgdHJhbnNmb3JtIHRyYW5zaXRpb24gZmlyc3QgaWYgdXNpbmcgbXVsdGlwbGUgdHJhbnNpdGlvbnMgKGUuZy4sIGB0cmFuc2Zvcm0gMnMgZWFzZSwgb3BhY2l0eSAuNXMgZWFzZS1vdXRgKVxuXG5cbi8vIFNwaW5uZXJzXG5cbiRzcGlubmVyLXdpZHRoOiAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kc3Bpbm5lci1oZWlnaHQ6ICAgICAgICAkc3Bpbm5lci13aWR0aCAhZGVmYXVsdDtcbiRzcGlubmVyLWJvcmRlci13aWR0aDogIC4yNWVtICFkZWZhdWx0O1xuXG4kc3Bpbm5lci13aWR0aC1zbTogICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kc3Bpbm5lci1oZWlnaHQtc206ICAgICAgICRzcGlubmVyLXdpZHRoLXNtICFkZWZhdWx0O1xuJHNwaW5uZXItYm9yZGVyLXdpZHRoLXNtOiAuMmVtICFkZWZhdWx0O1xuXG5cbi8vIENsb3NlXG5cbiRjbG9zZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNSAhZGVmYXVsdDtcbiRjbG9zZS1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGNsb3NlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGNsb3NlLXRleHQtc2hhZG93OiAgICAgICAgICAgICAgICAgMCAxcHggMCAkd2hpdGUgIWRlZmF1bHQ7XG5cblxuLy8gQ29kZVxuXG4kY29kZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICA4Ny41JSAhZGVmYXVsdDtcbiRjb2RlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICRwaW5rICFkZWZhdWx0O1xuXG4ka2JkLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgICAuMnJlbSAhZGVmYXVsdDtcbiRrYmQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAgIC40cmVtICFkZWZhdWx0O1xuJGtiZC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgJGNvZGUtZm9udC1zaXplICFkZWZhdWx0O1xuJGtiZC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGtiZC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuXG4kcHJlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4kcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDogICAgICAgICAzNDBweCAhZGVmYXVsdDtcblxuXG4vLyBVdGlsaXRpZXNcblxuJGRpc3BsYXlzOiBub25lLCBpbmxpbmUsIGlubGluZS1ibG9jaywgYmxvY2ssIHRhYmxlLCB0YWJsZS1yb3csIHRhYmxlLWNlbGwsIGZsZXgsIGlubGluZS1mbGV4ICFkZWZhdWx0O1xuJG92ZXJmbG93czogYXV0bywgaGlkZGVuICFkZWZhdWx0O1xuJHBvc2l0aW9uczogc3RhdGljLCByZWxhdGl2ZSwgYWJzb2x1dGUsIGZpeGVkLCBzdGlja3kgIWRlZmF1bHQ7XG5cblxuLy8gUHJpbnRpbmdcblxuJHByaW50LXBhZ2Utc2l6ZTogICAgICAgICAgICAgICAgICAgYTMgIWRlZmF1bHQ7XG4kcHJpbnQtYm9keS1taW4td2lkdGg6ICAgICAgICAgICAgICBtYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcImxnXCIpICFkZWZhdWx0O1xuIiwiLy8gSG92ZXIgbWl4aW4gYW5kIGAkZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5YCBhcmUgZGVwcmVjYXRlZC5cbi8vXG4vLyBPcmlnaW5hbGx5IGFkZGVkIGR1cmluZyBvdXIgYWxwaGFzIGFuZCBtYWludGFpbmVkIGR1cmluZyBiZXRhcywgdGhpcyBtaXhpbiB3YXNcbi8vIGRlc2lnbmVkIHRvIHByZXZlbnQgYDpob3ZlcmAgc3RpY2tpbmVzcyBvbiBpT1MtYW4gaXNzdWUgd2hlcmUgaG92ZXIgc3R5bGVzXG4vLyB3b3VsZCBwZXJzaXN0IGFmdGVyIGluaXRpYWwgdG91Y2guXG4vL1xuLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlJ3ZlIGtlcHQgdGhlc2UgbWl4aW5zIGFuZCB1cGRhdGVkIHRoZW0gdG9cbi8vIGFsd2F5cyByZXR1cm4gdGhlaXIgcmVndWxhciBwc2V1ZG8tY2xhc3NlcyBpbnN0ZWFkIG9mIGEgc2hpbW1lZCBtZWRpYSBxdWVyeS5cbi8vXG4vLyBJc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNTE5NVxuXG5AbWl4aW4gaG92ZXIoKSB7XG4gICY6aG92ZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMoKSB7XG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBwbGFpbi1ob3Zlci1mb2N1cygpIHtcbiAgJixcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLWZvY3VzLWFjdGl2ZSgpIHtcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQsIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlclxuXG4vL1xuLy8gSGVhZGluZ3Ncbi8vXG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG4uaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogJGhlYWRpbmdzLW1hcmdpbi1ib3R0b207XG4gIGZvbnQtZmFtaWx5OiAkaGVhZGluZ3MtZm9udC1mYW1pbHk7XG4gIGZvbnQtd2VpZ2h0OiAkaGVhZGluZ3MtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVhZGluZ3MtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaGVhZGluZ3MtY29sb3I7XG59XG5cbmgxLCAuaDEgeyBAaW5jbHVkZSBmb250LXNpemUoJGgxLWZvbnQtc2l6ZSk7IH1cbmgyLCAuaDIgeyBAaW5jbHVkZSBmb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7IH1cbmgzLCAuaDMgeyBAaW5jbHVkZSBmb250LXNpemUoJGgzLWZvbnQtc2l6ZSk7IH1cbmg0LCAuaDQgeyBAaW5jbHVkZSBmb250LXNpemUoJGg0LWZvbnQtc2l6ZSk7IH1cbmg1LCAuaDUgeyBAaW5jbHVkZSBmb250LXNpemUoJGg1LWZvbnQtc2l6ZSk7IH1cbmg2LCAuaDYgeyBAaW5jbHVkZSBmb250LXNpemUoJGg2LWZvbnQtc2l6ZSk7IH1cblxuLmxlYWQge1xuICBAaW5jbHVkZSBmb250LXNpemUoJGxlYWQtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRsZWFkLWZvbnQtd2VpZ2h0O1xufVxuXG4vLyBUeXBlIGRpc3BsYXkgY2xhc3Nlc1xuLmRpc3BsYXktMSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZGlzcGxheTEtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkZGlzcGxheTEtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGRpc3BsYXktbGluZS1oZWlnaHQ7XG59XG4uZGlzcGxheS0yIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRkaXNwbGF5Mi1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5Mi13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cbi5kaXNwbGF5LTMge1xuICBAaW5jbHVkZSBmb250LXNpemUoJGRpc3BsYXkzLXNpemUpO1xuICBmb250LXdlaWdodDogJGRpc3BsYXkzLXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xufVxuLmRpc3BsYXktNCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZGlzcGxheTQtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkZGlzcGxheTQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGRpc3BsYXktbGluZS1oZWlnaHQ7XG59XG5cblxuLy9cbi8vIEhvcml6b250YWwgcnVsZXNcbi8vXG5cbmhyIHtcbiAgbWFyZ2luLXRvcDogJGhyLW1hcmdpbi15O1xuICBtYXJnaW4tYm90dG9tOiAkaHItbWFyZ2luLXk7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXRvcDogJGhyLWJvcmRlci13aWR0aCBzb2xpZCAkaHItYm9yZGVyLWNvbG9yO1xufVxuXG5cbi8vXG4vLyBFbXBoYXNpc1xuLy9cblxuc21hbGwsXG4uc21hbGwge1xuICBAaW5jbHVkZSBmb250LXNpemUoJHNtYWxsLWZvbnQtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xufVxuXG5tYXJrLFxuLm1hcmsge1xuICBwYWRkaW5nOiAkbWFyay1wYWRkaW5nO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWFyay1iZztcbn1cblxuXG4vL1xuLy8gTGlzdHNcbi8vXG5cbi5saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xufVxuXG4vLyBJbmxpbmUgdHVybnMgbGlzdCBpdGVtcyBpbnRvIGlubGluZS1ibG9ja1xuLmxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xufVxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRsaXN0LWlubGluZS1wYWRkaW5nO1xuICB9XG59XG5cblxuLy9cbi8vIE1pc2Ncbi8vXG5cbi8vIEJ1aWxkcyBvbiBgYWJicmBcbi5pbml0aWFsaXNtIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDkwJSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vIEJsb2NrcXVvdGVzXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXI7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmxvY2txdW90ZS1mb250LXNpemUpO1xufVxuXG4uYmxvY2txdW90ZS1mb290ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRibG9ja3F1b3RlLXNtYWxsLWZvbnQtc2l6ZSk7XG4gIGNvbG9yOiAkYmxvY2txdW90ZS1zbWFsbC1jb2xvcjtcblxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDE0XFwwMEEwXCI7IC8vIGVtIGRhc2gsIG5ic3BcbiAgfVxufVxuIiwiLy8gTGlzdHNcblxuLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlXG5AbWl4aW4gbGlzdC11bnN0eWxlZCgpIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuIiwiLy8gUmVzcG9uc2l2ZSBpbWFnZXMgKGVuc3VyZSBpbWFnZXMgZG9uJ3Qgc2NhbGUgYmV5b25kIHRoZWlyIHBhcmVudHMpXG4vL1xuLy8gVGhpcyBpcyBwdXJwb3NlZnVsbHkgb3B0LWluIHZpYSBhbiBleHBsaWNpdCBjbGFzcyByYXRoZXIgdGhhbiBiZWluZyB0aGUgZGVmYXVsdCBmb3IgYWxsIGA8aW1nPmBzLlxuLy8gV2UgcHJldmlvdXNseSB0cmllZCB0aGUgXCJpbWFnZXMgYXJlIHJlc3BvbnNpdmUgYnkgZGVmYXVsdFwiIGFwcHJvYWNoIGluIEJvb3RzdHJhcCB2Mixcbi8vIGFuZCBhYmFuZG9uZWQgaXQgaW4gQm9vdHN0cmFwIHYzIGJlY2F1c2UgaXQgYnJlYWtzIGxvdHMgb2YgdGhpcmQtcGFydHkgd2lkZ2V0cyAoaW5jbHVkaW5nIEdvb2dsZSBNYXBzKVxuLy8gd2hpY2ggd2VyZW4ndCBleHBlY3RpbmcgdGhlIGltYWdlcyB3aXRoaW4gdGhlbXNlbHZlcyB0byBiZSBpbnZvbHVudGFyaWx5IHJlc2l6ZWQuXG4vLyBTZWUgYWxzbyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE4MTc4XG4uaW1nLWZsdWlkIHtcbiAgQGluY2x1ZGUgaW1nLWZsdWlkKCk7XG59XG5cblxuLy8gSW1hZ2UgdGh1bWJuYWlsc1xuLmltZy10aHVtYm5haWwge1xuICBwYWRkaW5nOiAkdGh1bWJuYWlsLXBhZGRpbmc7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0aHVtYm5haWwtYmc7XG4gIGJvcmRlcjogJHRodW1ibmFpbC1ib3JkZXItd2lkdGggc29saWQgJHRodW1ibmFpbC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHRodW1ibmFpbC1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkdGh1bWJuYWlsLWJveC1zaGFkb3cpO1xuXG4gIC8vIEtlZXAgdGhlbSBhdCBtb3N0IDEwMCUgd2lkZVxuICBAaW5jbHVkZSBpbWctZmx1aWQoKTtcbn1cblxuLy9cbi8vIEZpZ3VyZXNcbi8vXG5cbi5maWd1cmUge1xuICAvLyBFbnN1cmVzIHRoZSBjYXB0aW9uJ3MgdGV4dCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmZpZ3VyZS1pbWcge1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyIC8gMjtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5maWd1cmUtY2FwdGlvbiB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZmlndXJlLWNhcHRpb24tZm9udC1zaXplKTtcbiAgY29sb3I6ICRmaWd1cmUtY2FwdGlvbi1jb2xvcjtcbn1cbiIsIi8vIEltYWdlIE1peGluc1xuLy8gLSBSZXNwb25zaXZlIGltYWdlXG4vLyAtIFJldGluYSBpbWFnZVxuXG5cbi8vIFJlc3BvbnNpdmUgaW1hZ2Vcbi8vXG4vLyBLZWVwIGltYWdlcyBmcm9tIHNjYWxpbmcgYmV5b25kIHRoZSB3aWR0aCBvZiB0aGVpciBwYXJlbnRzLlxuXG5AbWl4aW4gaW1nLWZsdWlkKCkge1xuICAvLyBQYXJ0IDE6IFNldCBhIG1heGltdW0gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8vIFBhcnQgMjogT3ZlcnJpZGUgdGhlIGhlaWdodCB0byBhdXRvLCBvdGhlcndpc2UgaW1hZ2VzIHdpbGwgYmUgc3RyZXRjaGVkXG4gIC8vIHdoZW4gc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlIG9uIHRoZSBpbWcgZWxlbWVudC5cbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG5cbi8vIFJldGluYSBpbWFnZVxuLy9cbi8vIFNob3J0IHJldGluYSBtaXhpbiBmb3Igc2V0dGluZyBiYWNrZ3JvdW5kLWltYWdlIGFuZCAtc2l6ZS5cblxuQG1peGluIGltZy1yZXRpbmEoJGZpbGUtMXgsICRmaWxlLTJ4LCAkd2lkdGgtMXgsICRoZWlnaHQtMXgpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCRmaWxlLTF4KTtcblxuICAvLyBBdXRvcHJlZml4ZXIgdGFrZXMgY2FyZSBvZiBhZGRpbmcgLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvIGFuZCAtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvLFxuICAvLyBidXQgZG9lc24ndCBjb252ZXJ0IGRwcHg9PmRwaS5cbiAgLy8gVGhlcmUncyBubyBzdWNoIHRoaW5nIGFzIHVucHJlZml4ZWQgbWluLWRldmljZS1waXhlbC1yYXRpbyBzaW5jZSBpdCdzIG5vbnN0YW5kYXJkLlxuICAvLyBDb21wYXRpYmlsaXR5IGluZm86IGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IDE5MmRwaSksIC8vIElFOS0xMSBkb24ndCBzdXBwb3J0IGRwcHhcbiAgICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCkgeyAvLyBTdGFuZGFyZGl6ZWRcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGZpbGUtMngpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHdpZHRoLTF4ICRoZWlnaHQtMXg7XG4gIH1cbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYGltZy1yZXRpbmEoKWBcIiwgXCJ2NC4zLjBcIiwgXCJ2NVwiKTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWJsYWNrbGlzdFxuLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1c1xuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cywgJGZhbGxiYWNrLWJvcmRlci1yYWRpdXM6IGZhbHNlKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbiAgQGVsc2UgaWYgJGZhbGxiYWNrLWJvcmRlci1yYWRpdXMgIT0gZmFsc2Uge1xuICAgIGJvcmRlci1yYWRpdXM6ICRmYWxsYmFjay1ib3JkZXItcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuIiwiLy8gSW5saW5lIGNvZGVcbmNvZGUge1xuICBAaW5jbHVkZSBmb250LXNpemUoJGNvZGUtZm9udC1zaXplKTtcbiAgY29sb3I6ICRjb2RlLWNvbG9yO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cbiAgLy8gU3RyZWFtbGluZSB0aGUgc3R5bGUgd2hlbiBpbnNpZGUgYW5jaG9ycyB0byBhdm9pZCBicm9rZW4gdW5kZXJsaW5lIGFuZCBtb3JlXG4gIGEgPiAmIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuXG4vLyBVc2VyIGlucHV0IHR5cGljYWxseSBlbnRlcmVkIHZpYSBrZXlib2FyZFxua2JkIHtcbiAgcGFkZGluZzogJGtiZC1wYWRkaW5nLXkgJGtiZC1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgka2JkLWZvbnQtc2l6ZSk7XG4gIGNvbG9yOiAka2JkLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAka2JkLWJnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRib3JkZXItcmFkaXVzLXNtKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygka2JkLWJveC1zaGFkb3cpO1xuXG4gIGtiZCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6ICRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0O1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cbn1cblxuLy8gQmxvY2tzIG9mIGNvZGVcbnByZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGNvZGUtZm9udC1zaXplKTtcbiAgY29sb3I6ICRwcmUtY29sb3I7XG5cbiAgLy8gQWNjb3VudCBmb3Igc29tZSBjb2RlIG91dHB1dHMgdGhhdCBwbGFjZSBjb2RlIHRhZ3MgaW4gcHJlIHRhZ3NcbiAgY29kZSB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKGluaGVyaXQpO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgfVxufVxuXG4vLyBFbmFibGUgc2Nyb2xsYWJsZSBibG9ja3Mgb2YgY29kZVxuLnByZS1zY3JvbGxhYmxlIHtcbiAgbWF4LWhlaWdodDogJHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cbiIsIi8vIENvbnRhaW5lciB3aWR0aHNcbi8vXG4vLyBTZXQgdGhlIGNvbnRhaW5lciB3aWR0aCwgYW5kIG92ZXJyaWRlIGl0IGZvciBmaXhlZCBuYXZiYXJzIGluIG1lZGlhIHF1ZXJpZXMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC8vIFNpbmdsZSBjb250YWluZXIgY2xhc3Mgd2l0aCBicmVha3BvaW50IG1heC13aWR0aHNcbiAgLmNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgbWFrZS1jb250YWluZXIoKTtcbiAgICBAaW5jbHVkZSBtYWtlLWNvbnRhaW5lci1tYXgtd2lkdGhzKCk7XG4gIH1cblxuICAvLyAxMDAlIHdpZGUgY29udGFpbmVyIGF0IGFsbCBicmVha3BvaW50c1xuICAuY29udGFpbmVyLWZsdWlkIHtcbiAgICBAaW5jbHVkZSBtYWtlLWNvbnRhaW5lcigpO1xuICB9XG5cbiAgLy8gUmVzcG9uc2l2ZSBjb250YWluZXJzIHRoYXQgYXJlIDEwMCUgd2lkZSB1bnRpbCBhIGJyZWFrcG9pbnRcbiAgQGVhY2ggJGJyZWFrcG9pbnQsICRjb250YWluZXItbWF4LXdpZHRoIGluICRjb250YWluZXItbWF4LXdpZHRocyB7XG4gICAgLmNvbnRhaW5lci0jeyRicmVha3BvaW50fSB7XG4gICAgICBAZXh0ZW5kIC5jb250YWluZXItZmx1aWQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAgICVyZXNwb25zaXZlLWNvbnRhaW5lci0jeyRicmVha3BvaW50fSB7XG4gICAgICAgIG1heC13aWR0aDogJGNvbnRhaW5lci1tYXgtd2lkdGg7XG4gICAgICB9XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkd2lkdGggaW4gJGdyaWQtYnJlYWtwb2ludHMge1xuICAgICAgICBAaWYgKCRjb250YWluZXItbWF4LXdpZHRoID4gJHdpZHRoIG9yICRicmVha3BvaW50ID09ICRuYW1lKSB7XG4gICAgICAgICAgLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGdyaWQtYnJlYWtwb2ludHMpfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICVyZXNwb25zaXZlLWNvbnRhaW5lci0jeyRicmVha3BvaW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBSb3dcbi8vXG4vLyBSb3dzIGNvbnRhaW4geW91ciBjb2x1bW5zLlxuXG5AaWYgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBtYWtlLXJvdygpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBuZWdhdGl2ZSBtYXJnaW4gZnJvbSBkZWZhdWx0IC5yb3csIHRoZW4gdGhlIGhvcml6b250YWwgcGFkZGluZ1xuICAvLyBmcm9tIGFsbCBpbW1lZGlhdGUgY2hpbGRyZW4gY29sdW1ucyAodG8gcHJldmVudCBydW5hd2F5IHN0eWxlIGluaGVyaXRhbmNlKS5cbiAgLm5vLWd1dHRlcnMge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcblxuICAgID4gLmNvbCxcbiAgICA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi8vIENvbHVtbnNcbi8vXG4vLyBDb21tb24gc3R5bGVzIGZvciBzbWFsbCBhbmQgbGFyZ2UgZ3JpZCBjb2x1bW5zXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIG1ha2UtZ3JpZC1jb2x1bW5zKCk7XG59XG4iLCIvLy8gR3JpZCBzeXN0ZW1cbi8vXG4vLyBHZW5lcmF0ZSBzZW1hbnRpYyBncmlkIGNvbHVtbnMgd2l0aCB0aGVzZSBtaXhpbnMuXG5cbkBtaXhpbiBtYWtlLWNvbnRhaW5lcigkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXIgLyAyO1xuICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXIgLyAyO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG5cbi8vIEZvciBlYWNoIGJyZWFrcG9pbnQsIGRlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiB0aGUgY29udGFpbmVyIGluIGEgbWVkaWEgcXVlcnlcbkBtaXhpbiBtYWtlLWNvbnRhaW5lci1tYXgtd2lkdGhzKCRtYXgtd2lkdGhzOiAkY29udGFpbmVyLW1heC13aWR0aHMsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQsICRjb250YWluZXItbWF4LXdpZHRoIGluICRtYXgtd2lkdGhzIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIG1heC13aWR0aDogJGNvbnRhaW5lci1tYXgtd2lkdGg7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYWtlLXJvdygkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tcmlnaHQ6IC0kZ3V0dGVyIC8gMjtcbiAgbWFyZ2luLWxlZnQ6IC0kZ3V0dGVyIC8gMjtcbn1cblxuQG1peGluIG1ha2UtY29sLXJlYWR5KCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGJlY29taW5nIHRvbyBuYXJyb3cgd2hlbiBhdCBzbWFsbGVyIGdyaWQgdGllcnMgYnlcbiAgLy8gYWx3YXlzIHNldHRpbmcgYHdpZHRoOiAxMDAlO2AuIFRoaXMgd29ya3MgYmVjYXVzZSB3ZSB1c2UgYGZsZXhgIHZhbHVlc1xuICAvLyBsYXRlciBvbiB0byBvdmVycmlkZSB0aGlzIGluaXRpYWwgd2lkdGguXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXJpZ2h0OiAkZ3V0dGVyIC8gMjtcbiAgcGFkZGluZy1sZWZ0OiAkZ3V0dGVyIC8gMjtcbn1cblxuQG1peGluIG1ha2UtY29sKCRzaXplLCAkY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBmbGV4OiAwIDAgcGVyY2VudGFnZSgkc2l6ZSAvICRjb2x1bW5zKTtcbiAgLy8gQWRkIGEgYG1heC13aWR0aGAgdG8gZW5zdXJlIGNvbnRlbnQgd2l0aGluIGVhY2ggY29sdW1uIGRvZXMgbm90IGJsb3cgb3V0XG4gIC8vIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLiBBcHBsaWVzIHRvIElFMTArIGFuZCBGaXJlZm94LiBDaHJvbWUgYW5kIFNhZmFyaVxuICAvLyBkbyBub3QgYXBwZWFyIHRvIHJlcXVpcmUgdGhpcy5cbiAgbWF4LXdpZHRoOiBwZXJjZW50YWdlKCRzaXplIC8gJGNvbHVtbnMpO1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtYXV0bygpIHtcbiAgZmxleDogMCAwIGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7IC8vIFJlc2V0IGVhcmxpZXIgZ3JpZCB0aWVyc1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtb2Zmc2V0KCRzaXplLCAkY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICAkbnVtOiAkc2l6ZSAvICRjb2x1bW5zO1xuICBtYXJnaW4tbGVmdDogaWYoJG51bSA9PSAwLCAwLCBwZXJjZW50YWdlKCRudW0pKTtcbn1cblxuLy8gUm93IGNvbHVtbnNcbi8vXG4vLyBTcGVjaWZ5IG9uIGEgcGFyZW50IGVsZW1lbnQoZS5nLiwgLnJvdykgdG8gZm9yY2UgaW1tZWRpYXRlIGNoaWxkcmVuIGludG8gTk5cbi8vIG51bWJlcm9mIGNvbHVtbnMuIFN1cHBvcnRzIHdyYXBwaW5nIHRvIG5ldyBsaW5lcywgYnV0IGRvZXMgbm90IGRvIGEgTWFzb25yeVxuLy8gc3R5bGUgZ3JpZC5cbkBtaXhpbiByb3ctY29scygkY291bnQpIHtcbiAgJiA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlIC8gJGNvdW50O1xuICAgIG1heC13aWR0aDogMTAwJSAvICRjb3VudDtcbiAgfVxufVxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiAhPSBudWxsIGFuZCAkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBsYXJnZXN0IChsYXN0KSBicmVha3BvaW50LlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBvZiB0aGUgbmV4dCBvbmUgbGVzcyAwLjAycHhcbi8vIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGcmFtZXdvcmsgZ3JpZCBnZW5lcmF0aW9uXG4vL1xuLy8gVXNlZCBvbmx5IGJ5IEJvb3RzdHJhcCB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgZ3JpZCBjbGFzc2VzIGdpdmVuXG4vLyBhbnkgdmFsdWUgb2YgYCRncmlkLWNvbHVtbnNgLlxuXG5AbWl4aW4gbWFrZS1ncmlkLWNvbHVtbnMoJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMsICRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAvLyBDb21tb24gcHJvcGVydGllcyBmb3IgYWxsIGJyZWFrcG9pbnRzXG4gICVncmlkLWNvbHVtbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXIgLyAyO1xuICAgIHBhZGRpbmctbGVmdDogJGd1dHRlciAvIDI7XG4gIH1cblxuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG5cbiAgICAvLyBBbGxvdyBjb2x1bW5zIHRvIHN0cmV0Y2ggZnVsbCB3aWR0aCBiZWxvdyB0aGVpciBicmVha3BvaW50c1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgLmNvbCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgIEBleHRlbmQgJWdyaWQtY29sdW1uO1xuICAgICAgfVxuICAgIH1cbiAgICAuY29sI3skaW5maXh9LFxuICAgIC5jb2wjeyRpbmZpeH0tYXV0byB7XG4gICAgICBAZXh0ZW5kICVncmlkLWNvbHVtbjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIC8vIFByb3ZpZGUgYmFzaWMgYC5jb2wte2JwfWAgY2xhc3NlcyBmb3IgZXF1YWwtd2lkdGggZmxleGJveCBjb2x1bW5zXG4gICAgICAuY29sI3skaW5maXh9IHtcbiAgICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtcm93LWNvbHVtbnMge1xuICAgICAgICAucm93LWNvbHMjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHJvdy1jb2xzKCRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29sI3skaW5maXh9LWF1dG8ge1xuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1hdXRvKCk7XG4gICAgICB9XG5cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbCgkaSwgJGNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5vcmRlciN7JGluZml4fS1maXJzdCB7IG9yZGVyOiAtMTsgfVxuXG4gICAgICAub3JkZXIjeyRpbmZpeH0tbGFzdCB7IG9yZGVyOiAkY29sdW1ucyArIDE7IH1cblxuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkY29sdW1ucyB7XG4gICAgICAgIC5vcmRlciN7JGluZml4fS0jeyRpfSB7IG9yZGVyOiAkaTsgfVxuICAgICAgfVxuXG4gICAgICAvLyBgJGNvbHVtbnMgLSAxYCBiZWNhdXNlIG9mZnNldHRpbmcgYnkgdGhlIHdpZHRoIG9mIGFuIGVudGlyZSByb3cgaXNuJ3QgcG9zc2libGVcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggKCRjb2x1bW5zIC0gMSkge1xuICAgICAgICBAaWYgbm90ICgkaW5maXggPT0gXCJcIiBhbmQgJGkgPT0gMCkgeyAvLyBBdm9pZCBlbWl0dGluZyB1c2VsZXNzIC5vZmZzZXQtMFxuICAgICAgICAgIC5vZmZzZXQjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2wtb2Zmc2V0KCRpLCAkY29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQmFzaWMgQm9vdHN0cmFwIHRhYmxlXG4vL1xuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlcjtcbiAgY29sb3I6ICR0YWJsZS1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJnOyAvLyBSZXNldCBmb3IgbmVzdGluZyB3aXRoaW4gcGFyZW50cyB3aXRoIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBib3JkZXItdG9wOiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0aGVhZCB0aCB7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICBib3JkZXItYm90dG9tOiAoMiAqICR0YWJsZS1ib3JkZXItd2lkdGgpIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0Ym9keSArIHRib2R5IHtcbiAgICBib3JkZXItdG9wOiAoMiAqICR0YWJsZS1ib3JkZXItd2lkdGgpIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29uZGVuc2VkIHRhYmxlIHcvIGhhbGYgcGFkZGluZ1xuLy9cblxuLnRhYmxlLXNtIHtcbiAgdGgsXG4gIHRkIHtcbiAgICBwYWRkaW5nOiAkdGFibGUtY2VsbC1wYWRkaW5nLXNtO1xuICB9XG59XG5cblxuLy8gQm9yZGVyIHZlcnNpb25zXG4vL1xuLy8gQWRkIG9yIHJlbW92ZSBib3JkZXJzIGFsbCBhcm91bmQgdGhlIHRhYmxlIGFuZCBiZXR3ZWVuIGFsbCB0aGUgY29sdW1ucy5cblxuLnRhYmxlLWJvcmRlcmVkIHtcbiAgYm9yZGVyOiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG5cbiAgdGgsXG4gIHRkIHtcbiAgICBib3JkZXI6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIHRoZWFkIHtcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAyICogJHRhYmxlLWJvcmRlci13aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuLnRhYmxlLWJvcmRlcmxlc3Mge1xuICB0aCxcbiAgdGQsXG4gIHRoZWFkIHRoLFxuICB0Ym9keSArIHRib2R5IHtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuLy8gWmVicmEtc3RyaXBpbmdcbi8vXG4vLyBEZWZhdWx0IHplYnJhLXN0cmlwZSBzdHlsZXMgKGFsdGVybmF0aW5nIGdyYXkgYW5kIHRyYW5zcGFyZW50IGJhY2tncm91bmRzKVxuXG4udGFibGUtc3RyaXBlZCB7XG4gIHRib2R5IHRyOm50aC1vZi10eXBlKCN7JHRhYmxlLXN0cmlwZWQtb3JkZXJ9KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWFjY2VudC1iZztcbiAgfVxufVxuXG5cbi8vIEhvdmVyIGVmZmVjdFxuLy9cbi8vIFBsYWNlZCBoZXJlIHNpbmNlIGl0IGhhcyB0byBjb21lIGFmdGVyIHRoZSBwb3RlbnRpYWwgemVicmEgc3RyaXBpbmdcblxuLnRhYmxlLWhvdmVyIHtcbiAgdGJvZHkgdHIge1xuICAgIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgICAgY29sb3I6ICR0YWJsZS1ob3Zlci1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1ob3Zlci1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBUYWJsZSBiYWNrZ3JvdW5kc1xuLy9cbi8vIEV4YWN0IHNlbGVjdG9ycyBiZWxvdyByZXF1aXJlZCB0byBvdmVycmlkZSBgLnRhYmxlLXN0cmlwZWRgIGFuZCBwcmV2ZW50XG4vLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgQGluY2x1ZGUgdGFibGUtcm93LXZhcmlhbnQoJGNvbG9yLCB0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsICR0YWJsZS1iZy1sZXZlbCksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJHRhYmxlLWJvcmRlci1sZXZlbCkpO1xufVxuXG5AaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudChhY3RpdmUsICR0YWJsZS1hY3RpdmUtYmcpO1xuXG5cbi8vIERhcmsgc3R5bGVzXG4vL1xuLy8gU2FtZSB0YWJsZSBtYXJrdXAsIGJ1dCBpbnZlcnRlZCBjb2xvciBzY2hlbWU6IGRhcmsgYmFja2dyb3VuZCBhbmQgbGlnaHQgdGV4dC5cblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1zZWxlY3RvcnNcbi50YWJsZSB7XG4gIC50aGVhZC1kYXJrIHtcbiAgICB0aCB7XG4gICAgICBjb2xvcjogJHRhYmxlLWRhcmstY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtZGFyay1iZztcbiAgICAgIGJvcmRlci1jb2xvcjogJHRhYmxlLWRhcmstYm9yZGVyLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC50aGVhZC1saWdodCB7XG4gICAgdGgge1xuICAgICAgY29sb3I6ICR0YWJsZS1oZWFkLWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWhlYWQtYmc7XG4gICAgICBib3JkZXItY29sb3I6ICR0YWJsZS1ib3JkZXItY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi50YWJsZS1kYXJrIHtcbiAgY29sb3I6ICR0YWJsZS1kYXJrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtZGFyay1iZztcblxuICB0aCxcbiAgdGQsXG4gIHRoZWFkIHRoIHtcbiAgICBib3JkZXItY29sb3I6ICR0YWJsZS1kYXJrLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICYudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gICYudGFibGUtc3RyaXBlZCB7XG4gICAgdGJvZHkgdHI6bnRoLW9mLXR5cGUoI3skdGFibGUtc3RyaXBlZC1vcmRlcn0pIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWFjY2VudC1iZztcbiAgICB9XG4gIH1cblxuICAmLnRhYmxlLWhvdmVyIHtcbiAgICB0Ym9keSB0ciB7XG4gICAgICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICAgICAgY29sb3I6ICR0YWJsZS1kYXJrLWhvdmVyLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtZGFyay1ob3Zlci1iZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBSZXNwb25zaXZlIHRhYmxlc1xuLy9cbi8vIEdlbmVyYXRlIHNlcmllcyBvZiBgLnRhYmxlLXJlc3BvbnNpdmUtKmAgY2xhc3NlcyBmb3IgY29uZmlndXJpbmcgdGhlIHNjcmVlblxuLy8gc2l6ZSBvZiB3aGVyZSB5b3VyIHRhYmxlIHdpbGwgb3ZlcmZsb3cuXG5cbi50YWJsZS1yZXNwb25zaXZlIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRuZXh0LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAmI3skaW5maXh9IHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkYnJlYWtwb2ludCkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcblxuICAgICAgICAvLyBQcmV2ZW50IGRvdWJsZSBib3JkZXIgb24gaG9yaXpvbnRhbCBzY3JvbGwgZHVlIHRvIHVzZSBvZiBgZGlzcGxheTogYmxvY2s7YFxuICAgICAgICA+IC50YWJsZS1ib3JkZXJlZCB7XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBUYWJsZXNcblxuQG1peGluIHRhYmxlLXJvdy12YXJpYW50KCRzdGF0ZSwgJGJhY2tncm91bmQsICRib3JkZXI6IG51bGwpIHtcbiAgLy8gRXhhY3Qgc2VsZWN0b3JzIGJlbG93IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGAudGFibGUtc3RyaXBlZGAgYW5kIHByZXZlbnRcbiAgLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy5cbiAgLnRhYmxlLSN7JHN0YXRlfSB7XG4gICAgJixcbiAgICA+IHRoLFxuICAgID4gdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgQGlmICRib3JkZXIgIT0gbnVsbCB7XG4gICAgICB0aCxcbiAgICAgIHRkLFxuICAgICAgdGhlYWQgdGgsXG4gICAgICB0Ym9keSArIHRib2R5IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlcyBmb3IgYC50YWJsZS1ob3ZlcmBcbiAgLy8gTm90ZTogdGhpcyBpcyBub3QgYXZhaWxhYmxlIGZvciBjZWxscyBvciByb3dzIHdpdGhpbiBgdGhlYWRgIG9yIGB0Zm9vdGAuXG4gIC50YWJsZS1ob3ZlciB7XG4gICAgJGhvdmVyLWJhY2tncm91bmQ6IGRhcmtlbigkYmFja2dyb3VuZCwgNSUpO1xuXG4gICAgLnRhYmxlLSN7JHN0YXRlfSB7XG4gICAgICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhvdmVyLWJhY2tncm91bmQ7XG5cbiAgICAgICAgPiB0ZCxcbiAgICAgICAgPiB0aCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhvdmVyLWJhY2tncm91bmQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4vL1xuLy8gVGV4dHVhbCBmb3JtIGNvbnRyb2xzXG4vL1xuXG4uZm9ybS1jb250cm9sIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXkgJGlucHV0LXBhZGRpbmcteDtcbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuXG4gIC8vIE5vdGU6IFRoaXMgaGFzIG5vIGVmZmVjdCBvbiA8c2VsZWN0PnMgaW4gc29tZSBicm93c2VycywgZHVlIHRvIHRoZSBsaW1pdGVkIHN0eWxhYmlsaXR5IG9mIGA8c2VsZWN0PmBzIGluIENTUy5cbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cywgMCk7XG5cbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkaW5wdXQtYm94LXNoYWRvdyk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGlucHV0LXRyYW5zaXRpb24pO1xuXG4gIC8vIFVuc3R5bGUgdGhlIGNhcmV0IG9uIGA8c2VsZWN0PmBzIGluIElFMTArLlxuICAmOjotbXMtZXhwYW5kIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gIH1cblxuICAvLyBSZW1vdmUgc2VsZWN0IG91dGxpbmUgZnJvbSBzZWxlY3QgYm94IGluIEZGXG4gICY6LW1vei1mb2N1c3Jpbmcge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAgJGlucHV0LWNvbG9yO1xuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBgOmZvY3VzYCBzdGF0ZSB0byBpbWl0YXRlIG5hdGl2ZSBXZWJLaXQgc3R5bGVzLlxuICBAaW5jbHVkZSBmb3JtLWNvbnRyb2wtZm9jdXMoJGlnbm9yZS13YXJuaW5nOiB0cnVlKTtcblxuICAvLyBQbGFjZWhvbGRlclxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjtcbiAgICAvLyBPdmVycmlkZSBGaXJlZm94J3MgdW51c3VhbCBkZWZhdWx0IG9wYWNpdHk7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMTUyNi5cbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgYW5kIHJlYWQtb25seSBpbnB1dHNcbiAgLy9cbiAgLy8gSFRNTDUgc2F5cyB0aGF0IGNvbnRyb2xzIHVuZGVyIGEgZmllbGRzZXQgPiBsZWdlbmQ6Zmlyc3QtY2hpbGQgd29uJ3QgYmVcbiAgLy8gZGlzYWJsZWQgaWYgdGhlIGZpZWxkc2V0IGlzIGRpc2FibGVkLiBEdWUgdG8gaW1wbGVtZW50YXRpb24gZGlmZmljdWx0eSwgd2VcbiAgLy8gZG9uJ3QgaG9ub3IgdGhhdCBlZGdlIGNhc2U7IHdlIHN0eWxlIHRoZW0gYXMgZGlzYWJsZWQgYW55d2F5LlxuICAmOmRpc2FibGVkLFxuICAmW3JlYWRvbmx5XSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJnO1xuICAgIC8vIGlPUyBmaXggZm9yIHVucmVhZGFibGUgZGlzYWJsZWQgY29udGVudDsgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTE2NTUuXG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5zZWxlY3QuZm9ybS1jb250cm9sIHtcbiAgJjpmb2N1czo6LW1zLXZhbHVlIHtcbiAgICAvLyBTdXBwcmVzcyB0aGUgbmVzdGVkIGRlZmF1bHQgd2hpdGUgdGV4dCBvbiBibHVlIGJhY2tncm91bmQgaGlnaGxpZ2h0IGdpdmVuIHRvXG4gICAgLy8gdGhlIHNlbGVjdGVkIG9wdGlvbiB0ZXh0IHdoZW4gdGhlIChzdGlsbCBjbG9zZWQpIDxzZWxlY3Q+IHJlY2VpdmVzIGZvY3VzXG4gICAgLy8gaW4gSUUgYW5kICh1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMpIEVkZ2UsIGFzIGl0IGxvb2tzIGJhZCBhbmQgY2Fubm90IGJlIG1hZGUgdG9cbiAgICAvLyBtYXRjaCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgbmF0aXZlIHdpZGdldC5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xOTM5OC5cbiAgICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iZztcbiAgfVxufVxuXG4vLyBNYWtlIGZpbGUgaW5wdXRzIGJldHRlciBtYXRjaCB0ZXh0IGlucHV0cyBieSBmb3JjaW5nIHRoZW0gdG8gbmV3IGxpbmVzLlxuLmZvcm0tY29udHJvbC1maWxlLFxuLmZvcm0tY29udHJvbC1yYW5nZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuXG4vL1xuLy8gTGFiZWxzXG4vL1xuXG4vLyBGb3IgdXNlIHdpdGggaG9yaXpvbnRhbCBhbmQgaW5saW5lIGZvcm1zLCB3aGVuIHlvdSBuZWVkIHRoZSBsYWJlbCAob3IgbGVnZW5kKVxuLy8gdGV4dCB0byBhbGlnbiB3aXRoIHRoZSBmb3JtIGNvbnRyb2xzLlxuLmNvbC1mb3JtLWxhYmVsIHtcbiAgcGFkZGluZy10b3A6IGFkZCgkaW5wdXQtcGFkZGluZy15LCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgcGFkZGluZy1ib3R0b206IGFkZCgkaW5wdXQtcGFkZGluZy15LCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgdGhlIGA8bGFiZWw+LzxsZWdlbmQ+YCBkZWZhdWx0XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShpbmhlcml0KTsgLy8gT3ZlcnJpZGUgdGhlIGA8bGVnZW5kPmAgZGVmYXVsdFxuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xufVxuXG4uY29sLWZvcm0tbGFiZWwtbGcge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXktbGcsICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXktbGcsICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1sZyk7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQtbGc7XG59XG5cbi5jb2wtZm9ybS1sYWJlbC1zbSB7XG4gIHBhZGRpbmctdG9wOiBhZGQoJGlucHV0LXBhZGRpbmcteS1zbSwgJGlucHV0LWJvcmRlci13aWR0aCk7XG4gIHBhZGRpbmctYm90dG9tOiBhZGQoJGlucHV0LXBhZGRpbmcteS1zbSwgJGlucHV0LWJvcmRlci13aWR0aCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1zbTtcbn1cblxuXG4vLyBSZWFkb25seSBjb250cm9scyBhcyBwbGFpbiB0ZXh0XG4vL1xuLy8gQXBwbHkgY2xhc3MgdG8gYSByZWFkb25seSBpbnB1dCB0byBtYWtlIGl0IGFwcGVhciBsaWtlIHJlZ3VsYXIgcGxhaW5cbi8vIHRleHQgKHdpdGhvdXQgYW55IGJvcmRlciwgYmFja2dyb3VuZCBjb2xvciwgZm9jdXMgaW5kaWNhdG9yKVxuXG4uZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteSAwO1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBtYXRjaCBpbnB1dHMgaWYgdGhpcyBjbGFzcyBjb21lcyBvbiBpbnB1dHMgd2l0aCBkZWZhdWx0IG1hcmdpbnNcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LXBsYWludGV4dC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogJGlucHV0LWJvcmRlci13aWR0aCAwO1xuXG4gICYuZm9ybS1jb250cm9sLXNtLFxuICAmLmZvcm0tY29udHJvbC1sZyB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbn1cblxuXG4vLyBGb3JtIGNvbnRyb2wgc2l6aW5nXG4vL1xuLy8gQnVpbGQgb24gYC5mb3JtLWNvbnRyb2xgIHdpdGggbW9kaWZpZXIgY2xhc3NlcyB0byBkZWNyZWFzZSBvciBpbmNyZWFzZSB0aGVcbi8vIGhlaWdodCBhbmQgZm9udC1zaXplIG9mIGZvcm0gY29udHJvbHMuXG4vL1xuLy8gUmVwZWF0ZWQgaW4gYF9pbnB1dF9ncm91cC5zY3NzYCB0byBhdm9pZCBTYXNzIGV4dGVuZCBpc3N1ZXMuXG5cbi5mb3JtLWNvbnRyb2wtc20ge1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQtc207XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktc20gJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtc20pO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LXNtO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLXNtKTtcbn1cblxuLmZvcm0tY29udHJvbC1sZyB7XG4gIGhlaWdodDogJGlucHV0LWhlaWdodC1sZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteS1sZyAkaW5wdXQtcGFkZGluZy14LWxnO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1sZyk7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQtbGc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZHVwbGljYXRlLXNlbGVjdG9yc1xuc2VsZWN0LmZvcm0tY29udHJvbCB7XG4gICZbc2l6ZV0sXG4gICZbbXVsdGlwbGVdIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxudGV4dGFyZWEuZm9ybS1jb250cm9sIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vLyBGb3JtIGdyb3Vwc1xuLy9cbi8vIERlc2lnbmVkIHRvIGhlbHAgd2l0aCB0aGUgb3JnYW5pemF0aW9uIGFuZCBzcGFjaW5nIG9mIHZlcnRpY2FsIGZvcm1zLiBGb3Jcbi8vIGhvcml6b250YWwgZm9ybXMsIHVzZSB0aGUgcHJlZGVmaW5lZCBncmlkIGNsYXNzZXMuXG5cbi5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogJGZvcm0tZ3JvdXAtbWFyZ2luLWJvdHRvbTtcbn1cblxuLmZvcm0tdGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAkZm9ybS10ZXh0LW1hcmdpbi10b3A7XG59XG5cblxuLy8gRm9ybSBncmlkXG4vL1xuLy8gU3BlY2lhbCByZXBsYWNlbWVudCBmb3Igb3VyIGdyaWQgc3lzdGVtJ3MgYC5yb3dgIGZvciB0aWdodGVyIGZvcm0gbGF5b3V0cy5cblxuLmZvcm0tcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tcmlnaHQ6IC0kZm9ybS1ncmlkLWd1dHRlci13aWR0aCAvIDI7XG4gIG1hcmdpbi1sZWZ0OiAtJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGggLyAyO1xuXG4gID4gLmNvbCxcbiAgPiBbY2xhc3MqPVwiY29sLVwiXSB7XG4gICAgcGFkZGluZy1yaWdodDogJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGggLyAyO1xuICAgIHBhZGRpbmctbGVmdDogJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGggLyAyO1xuICB9XG59XG5cblxuLy8gQ2hlY2tib3hlcyBhbmQgcmFkaW9zXG4vL1xuLy8gSW5kZW50IHRoZSBsYWJlbHMgdG8gcG9zaXRpb24gcmFkaW9zL2NoZWNrYm94ZXMgYXMgaGFuZ2luZyBjb250cm9scy5cblxuLmZvcm0tY2hlY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLWxlZnQ6ICRmb3JtLWNoZWNrLWlucHV0LWd1dHRlcjtcbn1cblxuLmZvcm0tY2hlY2staW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi10b3A6ICRmb3JtLWNoZWNrLWlucHV0LW1hcmdpbi15O1xuICBtYXJnaW4tbGVmdDogLSRmb3JtLWNoZWNrLWlucHV0LWd1dHRlcjtcblxuICAvLyBVc2UgW2Rpc2FibGVkXSBhbmQgOmRpc2FibGVkIGZvciB3b3JrYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjgyNDdcbiAgJltkaXNhYmxlZF0gfiAuZm9ybS1jaGVjay1sYWJlbCxcbiAgJjpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gIH1cbn1cblxuLmZvcm0tY2hlY2stbGFiZWwge1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IGA8bGFiZWw+YCBib3R0b20gbWFyZ2luXG59XG5cbi5mb3JtLWNoZWNrLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDA7IC8vIE92ZXJyaWRlIGJhc2UgLmZvcm0tY2hlY2tcbiAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1jaGVjay1pbmxpbmUtbWFyZ2luLXg7XG5cbiAgLy8gVW5kbyAuZm9ybS1jaGVjay1pbnB1dCBkZWZhdWx0cyBhbmQgYWRkIHNvbWUgYG1hcmdpbi1yaWdodGAuXG4gIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1jaGVjay1pbmxpbmUtaW5wdXQtbWFyZ2luLXg7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cblxuXG4vLyBGb3JtIHZhbGlkYXRpb25cbi8vXG4vLyBQcm92aWRlIGZlZWRiYWNrIHRvIHVzZXJzIHdoZW4gZm9ybSBmaWVsZCB2YWx1ZXMgYXJlIHZhbGlkIG9yIGludmFsaWQuIFdvcmtzXG4vLyBwcmltYXJpbHkgZm9yIGNsaWVudC1zaWRlIHZhbGlkYXRpb24gdmlhIHNjb3BlZCBgOmludmFsaWRgIGFuZCBgOnZhbGlkYFxuLy8gcHNldWRvLWNsYXNzZXMgYnV0IGFsc28gaW5jbHVkZXMgYC5pcy1pbnZhbGlkYCBhbmQgYC5pcy12YWxpZGAgY2xhc3NlcyBmb3Jcbi8vIHNlcnZlciBzaWRlIHZhbGlkYXRpb24uXG5cbkBlYWNoICRzdGF0ZSwgJGRhdGEgaW4gJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXMge1xuICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUoJHN0YXRlLCBtYXAtZ2V0KCRkYXRhLCBjb2xvciksIG1hcC1nZXQoJGRhdGEsIGljb24pKTtcbn1cblxuLy8gSW5saW5lIGZvcm1zXG4vL1xuLy8gTWFrZSBmb3JtcyBhcHBlYXIgaW5saW5lKC1ibG9jaykgYnkgYWRkaW5nIHRoZSBgLmZvcm0taW5saW5lYCBjbGFzcy4gSW5saW5lXG4vLyBmb3JtcyBiZWdpbiBzdGFja2VkIG9uIGV4dHJhIHNtYWxsIChtb2JpbGUpIGRldmljZXMgYW5kIHRoZW4gZ28gaW5saW5lIHdoZW5cbi8vIHZpZXdwb3J0cyByZWFjaCA8NzY4cHguXG4vL1xuLy8gUmVxdWlyZXMgd3JhcHBpbmcgaW5wdXRzIGFuZCBsYWJlbHMgd2l0aCBgLmZvcm0tZ3JvdXBgIGZvciBwcm9wZXIgZGlzcGxheSBvZlxuLy8gZGVmYXVsdCBIVE1MIGZvcm0gY29udHJvbHMgYW5kIG91ciBjdXN0b20gZm9ybSBjb250cm9scyAoZS5nLiwgaW5wdXQgZ3JvdXBzKS5cblxuLmZvcm0taW5saW5lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLy8gUHJldmVudCBzaG9ydGVyIGVsZW1lbnRzIGZyb20gZ3Jvd2luZyB0byBzYW1lIGhlaWdodCBhcyBvdGhlcnMgKGUuZy4sIHNtYWxsIGJ1dHRvbnMgZ3Jvd2luZyB0byBub3JtYWwgc2l6ZWQgYnV0dG9uIGhlaWdodClcblxuICAvLyBCZWNhdXNlIHdlIHVzZSBmbGV4LCB0aGUgaW5pdGlhbCBzaXppbmcgb2YgY2hlY2tib3hlcyBpcyBjb2xsYXBzZWQgYW5kXG4gIC8vIGRvZXNuJ3Qgb2NjdXB5IHRoZSBmdWxsLXdpZHRoICh3aGljaCBpcyB3aGF0IHdlIHdhbnQgZm9yIHhzIGdyaWQgdGllciksXG4gIC8vIHNvIHdlIGZvcmNlIHRoYXQgaGVyZS5cbiAgLmZvcm0tY2hlY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gS2ljayBpbiB0aGUgaW5saW5lXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBsYWJlbCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAvLyBJbmxpbmUtYmxvY2sgYWxsIHRoZSB0aGluZ3MgZm9yIFwiaW5saW5lXCJcbiAgICAuZm9ybS1ncm91cCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgZm9sa3MgdG8gKm5vdCogdXNlIGAuZm9ybS1ncm91cGBcbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiBhdXRvOyAvLyBQcmV2ZW50IGxhYmVscyBmcm9tIHN0YWNraW5nIGFib3ZlIGlucHV0cyBpbiBgLmZvcm0tZ3JvdXBgXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3RhdGljIGNvbnRyb2xzIGJlaGF2ZSBsaWtlIHJlZ3VsYXIgb25lc1xuICAgIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICAuaW5wdXQtZ3JvdXAsXG4gICAgLmN1c3RvbS1zZWxlY3Qge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2luIG9uIHJhZGlvcy9jaGVja2JveGVzIHRoYXQgd2VyZSB1c2VkIGZvciBzdGFja2luZywgYW5kXG4gICAgLy8gdGhlbiB1bmRvIHRoZSBmbG9hdGluZyBvZiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgdG8gbWF0Y2guXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRmb3JtLWNoZWNrLWlucHV0LW1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmN1c3RvbS1jb250cm9sIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1ibGFja2xpc3RcbkBtaXhpbiB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLi4uKSB7XG4gIEBpZiAkZW5hYmxlLXRyYW5zaXRpb25zIHtcbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA9PSAwIHtcbiAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uLWJhc2U7XG4gICAgfSBAZWxzZSB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cblxuICBAaWYgJGVuYWJsZS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLW1lZGlhLXF1ZXJ5IHtcbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvcm0gY29udHJvbCBmb2N1cyBzdGF0ZVxuLy9cbi8vIEdlbmVyYXRlIGEgY3VzdG9taXplZCBmb2N1cyBzdGF0ZSBhbmQgZm9yIGFueSBpbnB1dCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IsXG4vLyB3aGljaCBkZWZhdWx0cyB0byB0aGUgYCRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3JgIHZhcmlhYmxlLlxuLy9cbi8vIFdlIGhpZ2hseSBlbmNvdXJhZ2UgeW91IHRvIG5vdCBjdXN0b21pemUgdGhlIGRlZmF1bHQgdmFsdWUsIGJ1dCBpbnN0ZWFkIHVzZVxuLy8gdGhpcyB0byB0d2VhayBjb2xvcnMgb24gYW4gYXMtbmVlZGVkIGJhc2lzLiBUaGlzIGFlc3RoZXRpYyBjaGFuZ2UgaXMgYmFzZWQgb25cbi8vIFdlYktpdCdzIGRlZmF1bHQgc3R5bGVzLCBidXQgYXBwbGljYWJsZSB0byBhIHdpZGVyIHJhbmdlIG9mIGJyb3dzZXJzLiBJdHNcbi8vIHVzYWJpbGl0eSBhbmQgYWNjZXNzaWJpbGl0eSBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50IHdpdGggYW55IGNoYW5nZS5cbi8vXG4vLyBFeGFtcGxlIHVzYWdlOiBjaGFuZ2UgdGhlIGRlZmF1bHQgYmx1ZSBib3JkZXIgYW5kIHNoYWRvdyB0byB3aGl0ZSBmb3IgYmV0dGVyXG4vLyBjb250cmFzdCBhZ2FpbnN0IGEgZGFyayBncmF5IGJhY2tncm91bmQuXG5AbWl4aW4gZm9ybS1jb250cm9sLWZvY3VzKCRpZ25vcmUtd2FybmluZzogZmFsc2UpIHtcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICRpbnB1dC1mb2N1cy1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZm9jdXMtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIG91dGxpbmU6IDA7XG4gICAgLy8gQXZvaWQgdXNpbmcgbWl4aW4gc28gd2UgY2FuIHBhc3MgY3VzdG9tIGZvY3VzIHNoYWRvdyBwcm9wZXJseVxuICAgIEBpZiAkZW5hYmxlLXNoYWRvd3Mge1xuICAgICAgYm94LXNoYWRvdzogJGlucHV0LWJveC1zaGFkb3csICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogJGlucHV0LWZvY3VzLWJveC1zaGFkb3c7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZShcIlRoZSBgZm9ybS1jb250cm9sLWZvY3VzKClgIG1peGluXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cblxuLy8gVGhpcyBtaXhpbiB1c2VzIGFuIGBpZigpYCB0ZWNobmlxdWUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIERhcnQgU2Fzc1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzE4NzMjaXNzdWVjb21tZW50LTE1MjI5MzcyNSBmb3IgbW9yZSBkZXRhaWxzXG5AbWl4aW4gZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICBAaWYgKCRzdGF0ZSA9PSBcInZhbGlkXCIgb3IgJHN0YXRlID09IFwiaW52YWxpZFwiKSB7XG4gICAgLndhcy12YWxpZGF0ZWQgI3tpZigmLCBcIiZcIiwgXCJcIil9OiN7JHN0YXRlfSxcbiAgICAje2lmKCYsIFwiJlwiLCBcIlwiKX0uaXMtI3skc3RhdGV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3tpZigmLCBcIiZcIiwgXCJcIil9LmlzLSN7JHN0YXRlfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZSgkc3RhdGUsICRjb2xvciwgJGljb24pIHtcbiAgLiN7JHN0YXRlfS1mZWVkYmFjayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAkZm9ybS1mZWVkYmFjay1tYXJnaW4tdG9wO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9ybS1mZWVkYmFjay1mb250LXNpemUpO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAuI3skc3RhdGV9LXRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgei1pbmRleDogNTtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1heC13aWR0aDogMTAwJTsgLy8gQ29udGFpbiB0byBwYXJlbnQgd2hlbiBwb3NzaWJsZVxuICAgIHBhZGRpbmc6ICRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy15ICRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy14O1xuICAgIG1hcmdpbi10b3A6IC4xcmVtO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9ybS1mZWVkYmFjay10b29sdGlwLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6ICRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtbGluZS1oZWlnaHQ7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkY29sb3IpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLCAkZm9ybS1mZWVkYmFjay10b29sdGlwLW9wYWNpdHkpO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICB+IC4jeyRzdGF0ZX0tZmVlZGJhY2ssXG4gICAgfiAuI3skc3RhdGV9LXRvb2x0aXAge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tY29udHJvbCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG5cbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkaW5wdXQtaGVpZ2h0LWlubmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRpY29uKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyIGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgJGlucHV0LWhlaWdodC1pbm5lci1oYWxmO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjI1KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG4gIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgQGlmICRlbmFibGUtdmFsaWRhdGlvbi1pY29ucyB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRpbnB1dC1oZWlnaHQtaW5uZXI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCAkaW5wdXQtaGVpZ2h0LWlubmVyLXF1YXJ0ZXIgcmlnaHQgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5jdXN0b20tc2VsZWN0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICAgICAgQGlmICRlbmFibGUtdmFsaWRhdGlvbi1pY29ucyB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRjdXN0b20tc2VsZWN0LWZlZWRiYWNrLWljb24tcGFkZGluZy1yaWdodDtcbiAgICAgICAgYmFja2dyb3VuZDogJGN1c3RvbS1zZWxlY3QtYmFja2dyb3VuZCwgZXNjYXBlLXN2ZygkaWNvbikgJGN1c3RvbS1zZWxlY3QtYmcgbm8tcmVwZWF0ICRjdXN0b20tc2VsZWN0LWZlZWRiYWNrLWljb24tcG9zaXRpb24gLyAkY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXNpemU7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGlucHV0LWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuMjUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cblxuICAgICAgfiAuI3skc3RhdGV9LWZlZWRiYWNrLFxuICAgICAgfiAuI3skc3RhdGV9LXRvb2x0aXAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogbGlnaHRlbigkY29sb3IsIDEwJSk7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcobGlnaHRlbigkY29sb3IsIDEwJSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkaW5wdXQtZm9jdXMtd2lkdGggcmdiYSgkY29sb3IsIC4yNSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Y2hlY2tlZCkgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBjdXN0b20gZmlsZVxuICAuY3VzdG9tLWZpbGUtaW5wdXQge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGlucHV0LWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuMjUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBHcmFkaWVudHNcblxuQG1peGluIGdyYWRpZW50LWJnKCRjb2xvcikge1xuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvciBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBtaXgoJGJvZHktYmcsICRjb2xvciwgMTUlKSwgJGNvbG9yKSByZXBlYXQteDtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vIEhvcml6b250YWwgZ3JhZGllbnQsIGZyb20gbGVmdCB0byByaWdodFxuLy9cbi8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuXG5AbWl4aW4gZ3JhZGllbnQteCgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkc3RhcnQtcGVyY2VudDogMCUsICRlbmQtcGVyY2VudDogMTAwJSkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRzdGFydC1jb2xvciAkc3RhcnQtcGVyY2VudCwgJGVuZC1jb2xvciAkZW5kLXBlcmNlbnQpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5cbi8vIFZlcnRpY2FsIGdyYWRpZW50LCBmcm9tIHRvcCB0byBib3R0b21cbi8vXG4vLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLlxuQG1peGluIGdyYWRpZW50LXkoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJHN0YXJ0LXBlcmNlbnQ6IDAlLCAkZW5kLXBlcmNlbnQ6IDEwMCUpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJHN0YXJ0LWNvbG9yICRzdGFydC1wZXJjZW50LCAkZW5kLWNvbG9yICRlbmQtcGVyY2VudCk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbn1cblxuQG1peGluIGdyYWRpZW50LWRpcmVjdGlvbmFsKCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRkZWc6IDQ1ZGVnKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkZGVnLCAkc3RhcnQtY29sb3IsICRlbmQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5AbWl4aW4gZ3JhZGllbnQteC10aHJlZS1jb2xvcnMoJHN0YXJ0LWNvbG9yOiAkYmx1ZSwgJG1pZC1jb2xvcjogJHB1cnBsZSwgJGNvbG9yLXN0b3A6IDUwJSwgJGVuZC1jb2xvcjogJHJlZCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5AbWl4aW4gZ3JhZGllbnQteS10aHJlZS1jb2xvcnMoJHN0YXJ0LWNvbG9yOiAkYmx1ZSwgJG1pZC1jb2xvcjogJHB1cnBsZSwgJGNvbG9yLXN0b3A6IDUwJSwgJGVuZC1jb2xvcjogJHJlZCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkbWlkLWNvbG9yICRjb2xvci1zdG9wLCAkZW5kLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cbkBtaXhpbiBncmFkaWVudC1yYWRpYWwoJGlubmVyLWNvbG9yOiAkZ3JheS03MDAsICRvdXRlci1jb2xvcjogJGdyYXktODAwKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICRpbm5lci1jb2xvciwgJG91dGVyLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cbkBtaXhpbiBncmFkaWVudC1zdHJpcGVkKCRjb2xvcjogcmdiYSgkd2hpdGUsIC4xNSksICRhbmdsZTogNDVkZWcpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRhbmdsZSwgJGNvbG9yIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsICRjb2xvciA1MCUsICRjb2xvciA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cbi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1mYW1pbHk6ICRidG4tZm9udC1mYW1pbHk7XG4gIGZvbnQtd2VpZ2h0OiAkYnRuLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGJvZHktY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6ICRidG4td2hpdGUtc3BhY2U7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGN1cnNvcjogaWYoJGVuYWJsZS1wb2ludGVyLWN1cnNvci1mb3ItYnV0dG9ucywgcG9pbnRlciwgbnVsbCk7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAkYnRuLWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGJ0bi1wYWRkaW5nLXksICRidG4tcGFkZGluZy14LCAkYnRuLWZvbnQtc2l6ZSwgJGJ0bi1saW5lLWhlaWdodCwgJGJ0bi1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkYnRuLXRyYW5zaXRpb24pO1xuXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiAkYm9keS1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJveC1zaGFkb3c6ICRidG4tZm9jdXMtYm94LXNoYWRvdztcbiAgfVxuXG4gIC8vIERpc2FibGVkIGNvbWVzIGZpcnN0IHNvIGFjdGl2ZSBjYW4gcHJvcGVybHkgcmVzdHlsZVxuICAmLmRpc2FibGVkLFxuICAmOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAkYnRuLWRpc2FibGVkLW9wYWNpdHk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxuXG4gICY6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLFxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWFjdGl2ZS1ib3gtc2hhZG93KTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWZvY3VzLWJveC1zaGFkb3csICRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBGdXR1cmUtcHJvb2YgZGlzYWJsaW5nIG9mIGNsaWNrcyBvbiBgPGE+YCBlbGVtZW50c1xuYS5idG4uZGlzYWJsZWQsXG5maWVsZHNldDpkaXNhYmxlZCBhLmJ0biB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5cbi8vXG4vLyBBbHRlcm5hdGUgYnV0dG9uc1xuLy9cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5idG4tI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudCgkdmFsdWUsICR2YWx1ZSk7XG4gIH1cbn1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5idG4tb3V0bGluZS0jeyRjb2xvcn0ge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJHZhbHVlKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBMaW5rIGJ1dHRvbnNcbi8vXG5cbi8vIE1ha2UgYSBidXR0b24gbG9vayBhbmQgYmVoYXZlIGxpa2UgYSBsaW5rXG4uYnRuLWxpbmsge1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgY29sb3I6ICRsaW5rLWNvbG9yO1xuICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWRlY29yYXRpb247XG5cbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgY29sb3I6ICRsaW5rLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGxpbmstaG92ZXItZGVjb3JhdGlvbjtcbiAgfVxuXG4gICY6Zm9jdXMsXG4gICYuZm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGxpbmstaG92ZXItZGVjb3JhdGlvbjtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgJjpkaXNhYmxlZCxcbiAgJi5kaXNhYmxlZCB7XG4gICAgY29sb3I6ICRidG4tbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC8vIE5vIG5lZWQgZm9yIGFuIGFjdGl2ZSBzdGF0ZSBoZXJlXG59XG5cblxuLy9cbi8vIEJ1dHRvbiBTaXplc1xuLy9cblxuLmJ0bi1sZyB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRidG4tcGFkZGluZy15LWxnLCAkYnRuLXBhZGRpbmcteC1sZywgJGJ0bi1mb250LXNpemUtbGcsICRidG4tbGluZS1oZWlnaHQtbGcsICRidG4tYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5idG4tc20ge1xuICBAaW5jbHVkZSBidXR0b24tc2l6ZSgkYnRuLXBhZGRpbmcteS1zbSwgJGJ0bi1wYWRkaW5nLXgtc20sICRidG4tZm9udC1zaXplLXNtLCAkYnRuLWxpbmUtaGVpZ2h0LXNtLCAkYnRuLWJvcmRlci1yYWRpdXMtc20pO1xufVxuXG5cbi8vXG4vLyBCbG9jayBidXR0b25cbi8vXG5cbi5idG4tYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLy8gVmVydGljYWxseSBzcGFjZSBvdXQgbXVsdGlwbGUgYmxvY2sgYnV0dG9uc1xuICArIC5idG4tYmxvY2sge1xuICAgIG1hcmdpbi10b3A6ICRidG4tYmxvY2stc3BhY2luZy15O1xuICB9XG59XG5cbi8vIFNwZWNpZmljaXR5IG92ZXJyaWRlc1xuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJidXR0b25cIl0ge1xuICAmLmJ0bi1ibG9jayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIi8vIEJ1dHRvbiB2YXJpYW50c1xuLy9cbi8vIEVhc2lseSBwdW1wIG91dCBkZWZhdWx0IHN0eWxlcywgYXMgd2VsbCBhcyA6aG92ZXIsIDpmb2N1cywgOmFjdGl2ZSxcbi8vIGFuZCBkaXNhYmxlZCBvcHRpb25zIGZvciBhbGwgYnV0dG9uc1xuXG5AbWl4aW4gYnV0dG9uLXZhcmlhbnQoJGJhY2tncm91bmQsICRib3JkZXIsICRob3Zlci1iYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQsIDcuNSUpLCAkaG92ZXItYm9yZGVyOiBkYXJrZW4oJGJvcmRlciwgMTAlKSwgJGFjdGl2ZS1iYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQsIDEwJSksICRhY3RpdmUtYm9yZGVyOiBkYXJrZW4oJGJvcmRlciwgMTIuNSUpKSB7XG4gIGNvbG9yOiBjb2xvci15aXEoJGJhY2tncm91bmQpO1xuICBAaW5jbHVkZSBncmFkaWVudC1iZygkYmFja2dyb3VuZCk7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWJveC1zaGFkb3cpO1xuXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGhvdmVyLWJhY2tncm91bmQpO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItY29sb3I6ICRob3Zlci1ib3JkZXI7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICBjb2xvcjogY29sb3IteWlxKCRob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkaG92ZXItYmFja2dyb3VuZCk7XG4gICAgYm9yZGVyLWNvbG9yOiAkaG92ZXItYm9yZGVyO1xuICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIGJveC1zaGFkb3c6ICRidG4tYm94LXNoYWRvdywgMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKG1peChjb2xvci15aXEoJGJhY2tncm91bmQpLCAkYm9yZGVyLCAxNSUpLCAuNSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEobWl4KGNvbG9yLXlpcSgkYmFja2dyb3VuZCksICRib3JkZXIsIDE1JSksIC41KTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkYmFja2dyb3VuZCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyO1xuICAgIC8vIFJlbW92ZSBDU1MgZ3JhZGllbnRzIGlmIHRoZXkncmUgZW5hYmxlZFxuICAgIEBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICY6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLFxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbiAgLnNob3cgPiAmLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkYWN0aXZlLWJhY2tncm91bmQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVtb3ZlIHRoZSBncmFkaWVudCBmb3IgdGhlIHByZXNzZWQvYWN0aXZlIHN0YXRlXG4gICAgfVxuICAgIGJvcmRlci1jb2xvcjogJGFjdGl2ZS1ib3JkZXI7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICAgIEBpZiAkZW5hYmxlLXNoYWRvd3MgYW5kICRidG4tYWN0aXZlLWJveC1zaGFkb3cgIT0gbm9uZSB7XG4gICAgICAgIGJveC1zaGFkb3c6ICRidG4tYWN0aXZlLWJveC1zaGFkb3csIDAgMCAwICRidG4tZm9jdXMtd2lkdGggcmdiYShtaXgoY29sb3IteWlxKCRiYWNrZ3JvdW5kKSwgJGJvcmRlciwgMTUlKSwgLjUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRidG4tZm9jdXMtd2lkdGggcmdiYShtaXgoY29sb3IteWlxKCRiYWNrZ3JvdW5kKSwgJGJvcmRlciwgMTUlKSwgLjUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYnV0dG9uLW91dGxpbmUtdmFyaWFudCgkY29sb3IsICRjb2xvci1ob3ZlcjogY29sb3IteWlxKCRjb2xvciksICRhY3RpdmUtYmFja2dyb3VuZDogJGNvbG9yLCAkYWN0aXZlLWJvcmRlcjogJGNvbG9yKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1jb2xvcjogJGFjdGl2ZS1ib3JkZXI7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuNSk7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmOmRpc2FibGVkIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsXG4gICY6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuICAuc2hvdyA+ICYuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogY29sb3IteWlxKCRhY3RpdmUtYmFja2dyb3VuZCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1jb2xvcjogJGFjdGl2ZS1ib3JkZXI7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICAgIEBpZiAkZW5hYmxlLXNoYWRvd3MgYW5kICRidG4tYWN0aXZlLWJveC1zaGFkb3cgIT0gbm9uZSB7XG4gICAgICAgIGJveC1zaGFkb3c6ICRidG4tYWN0aXZlLWJveC1zaGFkb3csIDAgMCAwICRidG4tZm9jdXMtd2lkdGggcmdiYSgkY29sb3IsIC41KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuNSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEJ1dHRvbiBzaXplc1xuQG1peGluIGJ1dHRvbi1zaXplKCRwYWRkaW5nLXksICRwYWRkaW5nLXgsICRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJGJvcmRlci1yYWRpdXMpIHtcbiAgcGFkZGluZzogJHBhZGRpbmcteSAkcGFkZGluZy14O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIC8vIE1hbnVhbGx5IGRlY2xhcmUgdG8gcHJvdmlkZSBhbiBvdmVycmlkZSB0byB0aGUgYnJvd3NlciBkZWZhdWx0XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMsIDApO1xufVxuIiwiLmZhZGUge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLWZhZGUpO1xuXG4gICY6bm90KC5zaG93KSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uY29sbGFwc2Uge1xuICAmOm5vdCguc2hvdykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmNvbGxhcHNpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkdHJhbnNpdGlvbi1jb2xsYXBzZSk7XG59XG4iLCIvLyBUaGUgZHJvcGRvd24gd3JhcHBlciAoYDxkaXY+YClcbi5kcm9wdXAsXG4uZHJvcHJpZ2h0LFxuLmRyb3Bkb3duLFxuLmRyb3BsZWZ0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZHJvcGRvd24tdG9nZ2xlIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAvLyBHZW5lcmF0ZSB0aGUgY2FyZXQgYXV0b21hdGljYWxseVxuICBAaW5jbHVkZSBjYXJldCgpO1xufVxuXG4vLyBUaGUgZHJvcGRvd24gbWVudVxuLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1kcm9wZG93bjtcbiAgZGlzcGxheTogbm9uZTsgLy8gbm9uZSBieSBkZWZhdWx0LCBidXQgYmxvY2sgb24gXCJvcGVuXCIgb2YgdGhlIG1lbnVcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1pbi13aWR0aDogJGRyb3Bkb3duLW1pbi13aWR0aDtcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmcteSAwO1xuICBtYXJnaW46ICRkcm9wZG93bi1zcGFjZXIgMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZHJvcGRvd24tZm9udC1zaXplKTtcbiAgY29sb3I6ICRkcm9wZG93bi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRW5zdXJlcyBwcm9wZXIgYWxpZ25tZW50IGlmIHBhcmVudCBoYXMgaXQgY2hhbmdlZCAoZS5nLiwgbW9kYWwgZm9vdGVyKVxuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJGRyb3Bkb3duLWJvcmRlci13aWR0aCBzb2xpZCAkZHJvcGRvd24tYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRkcm9wZG93bi1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkZHJvcGRvd24tYm94LXNoYWRvdyk7XG59XG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5kcm9wZG93bi1tZW51I3skaW5maXh9LWxlZnQge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51I3skaW5maXh9LXJpZ2h0IHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8gQWxsb3cgZm9yIGRyb3Bkb3ducyB0byBnbyBib3R0b20gdXAgKGFrYSwgZHJvcHVwLW1lbnUpXG4vLyBKdXN0IGFkZCAuZHJvcHVwIGFmdGVyIHRoZSBzdGFuZGFyZCAuZHJvcGRvd24gY2xhc3MgYW5kIHlvdSdyZSBzZXQuXG4uZHJvcHVwIHtcbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHRvcDogYXV0bztcbiAgICBib3R0b206IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAkZHJvcGRvd24tc3BhY2VyO1xuICB9XG5cbiAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgY2FyZXQodXApO1xuICB9XG59XG5cbi5kcm9wcmlnaHQge1xuICAuZHJvcGRvd24tbWVudSB7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tbGVmdDogJGRyb3Bkb3duLXNwYWNlcjtcbiAgfVxuXG4gIC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGNhcmV0KHJpZ2h0KTtcbiAgICAmOjphZnRlciB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLmRyb3BsZWZ0IHtcbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMTAwJTtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAkZHJvcGRvd24tc3BhY2VyO1xuICB9XG5cbiAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgY2FyZXQobGVmdCk7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBXaGVuIGVuYWJsZWQgUG9wcGVyLmpzLCByZXNldCBiYXNpYyBkcm9wZG93biBwb3NpdGlvblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1zZWxlY3RvcnNcbi5kcm9wZG93bi1tZW51IHtcbiAgJlt4LXBsYWNlbWVudF49XCJ0b3BcIl0sXG4gICZbeC1wbGFjZW1lbnRePVwicmlnaHRcIl0sXG4gICZbeC1wbGFjZW1lbnRePVwiYm90dG9tXCJdLFxuICAmW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGJvdHRvbTogYXV0bztcbiAgfVxufVxuXG4vLyBEaXZpZGVycyAoYmFzaWNhbGx5IGFuIGA8aHI+YCkgd2l0aGluIHRoZSBkcm9wZG93blxuLmRyb3Bkb3duLWRpdmlkZXIge1xuICBAaW5jbHVkZSBuYXYtZGl2aWRlcigkZHJvcGRvd24tZGl2aWRlci1iZywgJGRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXksIHRydWUpO1xufVxuXG4vLyBMaW5rcywgYnV0dG9ucywgYW5kIG1vcmUgd2l0aGluIHRoZSBkcm9wZG93biBtZW51XG4vL1xuLy8gYDxidXR0b24+YC1zcGVjaWZpYyBzdHlsZXMgYXJlIGRlbm90ZWQgd2l0aCBgLy8gRm9yIDxidXR0b24+c2Bcbi5kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHNcbiAgcGFkZGluZzogJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy15ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDtcbiAgY2xlYXI6IGJvdGg7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBjb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3I7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvLyBwcmV2ZW50IGxpbmtzIGZyb20gcmFuZG9tbHkgYnJlYWtpbmcgb250byBuZXcgbGluZXNcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICBib3JkZXI6IDA7IC8vIEZvciBgPGJ1dHRvbj5gc1xuXG4gIC8vIFByZXZlbnQgZHJvcGRvd24gb3ZlcmZsb3cgaWYgdGhlcmUncyBubyBwYWRkaW5nXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8yNzcwM1xuICBAaWYgJGRyb3Bkb3duLXBhZGRpbmcteSA9PSAwIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGRyb3Bkb3duLWxpbmstaG92ZXItYmcpO1xuICB9XG5cbiAgJi5hY3RpdmUsXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkZHJvcGRvd24tbGluay1hY3RpdmUtYmcpO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRkcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIC8vIFJlbW92ZSBDU1MgZ3JhZGllbnRzIGlmIHRoZXkncmUgZW5hYmxlZFxuICAgIEBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4uZHJvcGRvd24tbWVudS5zaG93IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIERyb3Bkb3duIHNlY3Rpb24gaGVhZGVyc1xuLmRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkZHJvcGRvd24tcGFkZGluZy15ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gZm9yIHVzZSB3aXRoIGhlYWRpbmcgZWxlbWVudHNcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250LXNpemUtc20pO1xuICBjb2xvcjogJGRyb3Bkb3duLWhlYWRlci1jb2xvcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gYXMgd2l0aCA+IGxpID4gYVxufVxuXG4vLyBEcm9wZG93biB0ZXh0XG4uZHJvcGRvd24taXRlbS10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteSAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXg7XG4gIGNvbG9yOiAkZHJvcGRvd24tbGluay1jb2xvcjtcbn1cbiIsIkBtaXhpbiBjYXJldC1kb3duKCkge1xuICBib3JkZXItdG9wOiAkY2FyZXQtd2lkdGggc29saWQ7XG4gIGJvcmRlci1yaWdodDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAwO1xuICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG5AbWl4aW4gY2FyZXQtdXAoKSB7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1yaWdodDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQ7XG4gIGJvcmRlci1sZWZ0OiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldC1yaWdodCgpIHtcbiAgYm9yZGVyLXRvcDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1ib3R0b206ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6ICRjYXJldC13aWR0aCBzb2xpZDtcbn1cblxuQG1peGluIGNhcmV0LWxlZnQoKSB7XG4gIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAkY2FyZXQtd2lkdGggc29saWQ7XG4gIGJvcmRlci1ib3R0b206ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuQG1peGluIGNhcmV0KCRkaXJlY3Rpb246IGRvd24pIHtcbiAgQGlmICRlbmFibGUtY2FyZXQge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1sZWZ0OiAkY2FyZXQtc3BhY2luZztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiAkY2FyZXQtdmVydGljYWwtYWxpZ247XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgQGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICAgIEBpbmNsdWRlIGNhcmV0LWRvd24oKTtcbiAgICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICAgIEBpbmNsdWRlIGNhcmV0LXVwKCk7XG4gICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1yaWdodCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJGNhcmV0LXNwYWNpbmc7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiAkY2FyZXQtdmVydGljYWwtYWxpZ247XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIEBpbmNsdWRlIGNhcmV0LWxlZnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmVtcHR5OjphZnRlciB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEhvcml6b250YWwgZGl2aWRlcnNcbi8vXG4vLyBEaXZpZGVycyAoYmFzaWNhbGx5IGFuIGhyKSB3aXRoaW4gZHJvcGRvd25zIGFuZCBuYXYgbGlzdHNcblxuQG1peGluIG5hdi1kaXZpZGVyKCRjb2xvcjogJG5hdi1kaXZpZGVyLWNvbG9yLCAkbWFyZ2luLXk6ICRuYXYtZGl2aWRlci1tYXJnaW4teSwgJGlnbm9yZS13YXJuaW5nOiBmYWxzZSkge1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbjogJG1hcmdpbi15IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3I7XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZShcIlRoZSBgbmF2LWRpdmlkZXIoKWAgbWl4aW5cIiwgXCJ2NC40LjBcIiwgXCJ2NVwiLCAkaWdub3JlLXdhcm5pbmcpO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cbi8vIE1ha2UgdGhlIGRpdiBiZWhhdmUgbGlrZSBhIGJ1dHRvblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBtYXRjaCAuYnRuIGFsaWdubWVudCBnaXZlbiBmb250LXNpemUgaGFjayBhYm92ZVxuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuXG4gICAgLy8gQnJpbmcgdGhlIGhvdmVyLCBmb2N1c2VkLCBhbmQgXCJhY3RpdmVcIiBidXR0b25zIHRvIHRoZSBmcm9udCB0byBvdmVybGF5XG4gICAgLy8gdGhlIGJvcmRlcnMgcHJvcGVybHlcbiAgICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUsXG4gICAgJi5hY3RpdmUge1xuICAgICAgei1pbmRleDogMTtcbiAgICB9XG4gIH1cbn1cblxuLy8gT3B0aW9uYWw6IEdyb3VwIG11bHRpcGxlIGJ1dHRvbiBncm91cHMgdG9nZXRoZXIgZm9yIGEgdG9vbGJhclxuLmJ0bi10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgLmlucHV0LWdyb3VwIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4uYnRuLWdyb3VwIHtcbiAgLy8gUHJldmVudCBkb3VibGUgYm9yZGVycyB3aGVuIGJ1dHRvbnMgYXJlIG5leHQgdG8gZWFjaCBvdGhlclxuICA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0kYnRuLWJvcmRlci13aWR0aDtcbiAgfVxuXG4gIC8vIFJlc2V0IHJvdW5kZWQgY29ybmVyc1xuICA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4gID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTtcbiAgfVxuXG4gID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDApO1xuICB9XG59XG5cbi8vIFNpemluZ1xuLy9cbi8vIFJlbWl4IHRoZSBkZWZhdWx0IGJ1dHRvbiBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXIgbWFuaXB1bGF0aW9uLlxuXG4uYnRuLWdyb3VwLXNtID4gLmJ0biB7IEBleHRlbmQgLmJ0bi1zbTsgfVxuLmJ0bi1ncm91cC1sZyA+IC5idG4geyBAZXh0ZW5kIC5idG4tbGc7IH1cblxuXG4vL1xuLy8gU3BsaXQgYnV0dG9uIGRyb3Bkb3duc1xuLy9cblxuLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRidG4tcGFkZGluZy14ICogLjc1O1xuICBwYWRkaW5nLWxlZnQ6ICRidG4tcGFkZGluZy14ICogLjc1O1xuXG4gICY6OmFmdGVyLFxuICAuZHJvcHVwICY6OmFmdGVyLFxuICAuZHJvcHJpZ2h0ICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuXG4gIC5kcm9wbGVmdCAmOjpiZWZvcmUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uYnRuLXNtICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRidG4tcGFkZGluZy14LXNtICogLjc1O1xuICBwYWRkaW5nLWxlZnQ6ICRidG4tcGFkZGluZy14LXNtICogLjc1O1xufVxuXG4uYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRidG4tcGFkZGluZy14LWxnICogLjc1O1xuICBwYWRkaW5nLWxlZnQ6ICRidG4tcGFkZGluZy14LWxnICogLjc1O1xufVxuXG5cbi8vIFRoZSBjbGlja2FibGUgYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbWVudVxuLy8gU2V0IHRoZSBzYW1lIGluc2V0IHNoYWRvdyBhcyB0aGUgOmFjdGl2ZSBzdGF0ZVxuLmJ0bi1ncm91cC5zaG93IC5kcm9wZG93bi10b2dnbGUge1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuXG4gIC8vIFNob3cgbm8gc2hhZG93IGZvciBgLmJ0bi1saW5rYCBzaW5jZSBpdCBoYXMgbm8gb3RoZXIgYnV0dG9uIHN0eWxlcy5cbiAgJi5idG4tbGluayB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBWZXJ0aWNhbCBidXR0b24gZ3JvdXBzXG4vL1xuXG4uYnRuLWdyb3VwLXZlcnRpY2FsIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gID4gLmJ0bixcbiAgPiAuYnRuLWdyb3VwIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tdG9wOiAtJGJ0bi1ib3JkZXItd2lkdGg7XG4gIH1cblxuICAvLyBSZXNldCByb3VuZGVkIGNvcm5lcnNcbiAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKDApO1xuICB9XG5cbiAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygwKTtcbiAgfVxufVxuXG5cbi8vIENoZWNrYm94IGFuZCByYWRpbyBvcHRpb25zXG4vL1xuLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgYnJvd3NlcidzIGZvcm0gdmFsaWRhdGlvbiBmZWVkYmFjaywgcG93ZXJlZCBieSB0aGVcbi8vIGByZXF1aXJlZGAgYXR0cmlidXRlLCB3ZSBoYXZlIHRvIFwiaGlkZVwiIHRoZSBpbnB1dHMgdmlhIGBjbGlwYC4gV2UgY2Fubm90IHVzZVxuLy8gYGRpc3BsYXk6IG5vbmU7YCBvciBgdmlzaWJpbGl0eTogaGlkZGVuO2AgYXMgdGhhdCBhbHNvIGhpZGVzIHRoZSBwb3BvdmVyLlxuLy8gU2ltcGx5IHZpc3VhbGx5IGhpZGluZyB0aGUgaW5wdXRzIHZpYSBgb3BhY2l0eWAgd291bGQgbGVhdmUgdGhlbSBjbGlja2FibGUgaW5cbi8vIGNlcnRhaW4gY2FzZXMgd2hpY2ggaXMgcHJldmVudGVkIGJ5IHVzaW5nIGBjbGlwYCBhbmQgYHBvaW50ZXItZXZlbnRzYC5cbi8vIFRoaXMgd2F5LCB3ZSBlbnN1cmUgYSBET00gZWxlbWVudCBpcyB2aXNpYmxlIHRvIHBvc2l0aW9uIHRoZSBwb3BvdmVyIGZyb20uXG4vL1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzEyNzk0IGFuZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTQ1NTkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbi5idG4tZ3JvdXAtdG9nZ2xlIHtcbiAgPiAuYnRuLFxuICA+IC5idG4tZ3JvdXAgPiAuYnRuIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IGA8bGFiZWw+YCB2YWx1ZVxuXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblxuLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDsgLy8gRm9yIGZvcm0gdmFsaWRhdGlvbiBmZWVkYmFja1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAuZm9ybS1jb250cm9sLFxuICA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LFxuICA+IC5jdXN0b20tc2VsZWN0LFxuICA+IC5jdXN0b20tZmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZm9jdXMgc3RhdGUncyB6LWluZGV4XG4gICAgZmxleDogMSAxIDAlO1xuICAgIG1pbi13aWR0aDogMDsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzYyNDcxNDAvd2h5LWRvbnQtZmxleC1pdGVtcy1zaHJpbmstcGFzdC1jb250ZW50LXNpemVcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgKyAuZm9ybS1jb250cm9sLFxuICAgICsgLmN1c3RvbS1zZWxlY3QsXG4gICAgKyAuY3VzdG9tLWZpbGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IC0kaW5wdXQtYm9yZGVyLXdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBcImFjdGl2ZVwiIGZvcm0gY29udHJvbCB0byB0aGUgdG9wIG9mIHN1cnJvdW5kaW5nIGVsZW1lbnRzXG4gID4gLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cyxcbiAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgICB6LWluZGV4OiAzO1xuICB9XG5cbiAgLy8gQnJpbmcgdGhlIGN1c3RvbSBmaWxlIGlucHV0IGFib3ZlIHRoZSBsYWJlbFxuICA+IC5jdXN0b20tZmlsZSAuY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMge1xuICAgIHotaW5kZXg6IDQ7XG4gIH1cblxuICA+IC5mb3JtLWNvbnRyb2wsXG4gID4gLmN1c3RvbS1zZWxlY3Qge1xuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7IEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7IH1cbiAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHsgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDApOyB9XG4gIH1cblxuICAvLyBDdXN0b20gZmlsZSBpbnB1dHMgaGF2ZSBtb3JlIGNvbXBsZXggbWFya3VwLCB0aHVzIHJlcXVpcmluZyBkaWZmZXJlbnRcbiAgLy8gYm9yZGVyLXJhZGl1cyBvdmVycmlkZXMuXG4gID4gLmN1c3RvbS1maWxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsLFxuICAgICY6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTsgfVxuICAgICY6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsIHsgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDApOyB9XG4gIH1cbn1cblxuXG4vLyBQcmVwZW5kIGFuZCBhcHBlbmRcbi8vXG4vLyBXaGlsZSBpdCByZXF1aXJlcyBvbmUgZXh0cmEgbGF5ZXIgb2YgSFRNTCBmb3IgZWFjaCwgZGVkaWNhdGVkIHByZXBlbmQgYW5kXG4vLyBhcHBlbmQgZWxlbWVudHMgYWxsb3cgdXMgdG8gMSkgYmUgbGVzcyBjbGV2ZXIsIDIpIHNpbXBsaWZ5IG91ciBzZWxlY3RvcnMsIGFuZFxuLy8gMykgc3VwcG9ydCBIVE1MNSBmb3JtIHZhbGlkYXRpb24uXG5cbi5pbnB1dC1ncm91cC1wcmVwZW5kLFxuLmlucHV0LWdyb3VwLWFwcGVuZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgLy8gRW5zdXJlIGJ1dHRvbnMgYXJlIGFsd2F5cyBhYm92ZSBpbnB1dHMgZm9yIG1vcmUgdmlzdWFsbHkgcGxlYXNpbmcgYm9yZGVycy5cbiAgLy8gVGhpcyBpc24ndCBuZWVkZWQgZm9yIGAuaW5wdXQtZ3JvdXAtdGV4dGAgc2luY2UgaXQgc2hhcmVzIHRoZSBzYW1lIGJvcmRlci1jb2xvclxuICAvLyBhcyBvdXIgaW5wdXRzLlxuICAuYnRuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcblxuICAgICY6Zm9jdXMge1xuICAgICAgei1pbmRleDogMztcbiAgICB9XG4gIH1cblxuICAuYnRuICsgLmJ0bixcbiAgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LFxuICAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LFxuICAuaW5wdXQtZ3JvdXAtdGV4dCArIC5idG4ge1xuICAgIG1hcmdpbi1sZWZ0OiAtJGlucHV0LWJvcmRlci13aWR0aDtcbiAgfVxufVxuXG4uaW5wdXQtZ3JvdXAtcHJlcGVuZCB7IG1hcmdpbi1yaWdodDogLSRpbnB1dC1ib3JkZXItd2lkdGg7IH1cbi5pbnB1dC1ncm91cC1hcHBlbmQgeyBtYXJnaW4tbGVmdDogLSRpbnB1dC1ib3JkZXItd2lkdGg7IH1cblxuXG4vLyBUZXh0dWFsIGFkZG9uc1xuLy9cbi8vIFNlcnZlcyBhcyBhIGNhdGNoLWFsbCBlbGVtZW50IGZvciBhbnkgdGV4dCBvciByYWRpby9jaGVja2JveCBpbnB1dCB5b3Ugd2lzaFxuLy8gdG8gcHJlcGVuZCBvciBhcHBlbmQgdG8gYW4gaW5wdXQuXG5cbi5pbnB1dC1ncm91cC10ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmcteSAkaW5wdXQtcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBBbGxvdyB1c2Ugb2YgPGxhYmVsPiBlbGVtZW50cyBieSBvdmVycmlkaW5nIG91ciBkZWZhdWx0IG1hcmdpbi1ib3R0b21cbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUpOyAvLyBNYXRjaCBpbnB1dHNcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtZ3JvdXAtYWRkb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWdyb3VwLWFkZG9uLWJnO1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gTnVrZSBkZWZhdWx0IG1hcmdpbnMgZnJvbSBjaGVja2JveGVzIGFuZCByYWRpb3MgdG8gdmVydGljYWxseSBjZW50ZXIgd2l0aGluLlxuICBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxufVxuXG5cbi8vIFNpemluZ1xuLy9cbi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXJcbi8vIG1hbmlwdWxhdGlvbi5cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbDpub3QodGV4dGFyZWEpLFxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3Qge1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQtbGc7XG59XG5cbi5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXNlbGVjdCxcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmJ0biB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LWxnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbDpub3QodGV4dGFyZWEpLFxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1zZWxlY3Qge1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQtc207XG59XG5cbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXNlbGVjdCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmJ0biB7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktc20gJGlucHV0LXBhZGRpbmcteC1zbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtc20pO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LXNtO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLXNtKTtcbn1cblxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXNlbGVjdCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteCArICRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nO1xufVxuXG5cbi8vIFByZXBlbmQgYW5kIGFwcGVuZCByb3VuZGVkIGNvcm5lcnNcbi8vXG4vLyBUaGVzZSBydWxlc2V0cyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIHNpemluZyBvbmVzIHRvIHByb3Blcmx5IG92ZXJyaWRlIHNtIGFuZCBsZ1xuLy8gYm9yZGVyLXJhZGl1cyB2YWx1ZXMgd2hlbiBleHRlbmRpbmcuIFRoZXkncmUgbW9yZSBzcGVjaWZpYyB0aGFuIHdlJ2QgbGlrZVxuLy8gd2l0aCB0aGUgYC5pbnB1dC1ncm91cCA+YCBwYXJ0LCBidXQgd2l0aG91dCBpdCwgd2UgY2Fubm90IG92ZXJyaWRlIHRoZSBzaXppbmcuXG5cblxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTtcbn1cblxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTtcbn1cbiIsIi8vIEVtYmVkZGVkIGljb25zIGZyb20gT3BlbiBJY29uaWMuXG4vLyBSZWxlYXNlZCB1bmRlciBNSVQgYW5kIGNvcHlyaWdodCAyMDE0IFdheWJ1cnkuXG4vLyBodHRwczovL3VzZWljb25pYy5jb20vb3BlblxuXG5cbi8vIENoZWNrYm94ZXMgYW5kIHJhZGlvc1xuLy9cbi8vIEJhc2UgY2xhc3MgdGFrZXMgY2FyZSBvZiBhbGwgdGhlIGtleSBiZWhhdmlvcmFsIGFzcGVjdHMuXG5cbi5jdXN0b20tY29udHJvbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1pbi1oZWlnaHQ6ICRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlO1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tY29udHJvbC1ndXR0ZXIgKyAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgbWFyZ2luLXJpZ2h0OiAkY3VzdG9tLWNvbnRyb2wtc3BhY2VyLXg7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogLTE7IC8vIFB1dCB0aGUgaW5wdXQgYmVoaW5kIHRoZSBsYWJlbCBzbyBpdCBkb2Vzbid0IG92ZXJsYXkgdGV4dFxuICB3aWR0aDogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xuICBoZWlnaHQ6ICgkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSArICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSkgLyAyO1xuICBvcGFjaXR5OiAwO1xuXG4gICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJvcmRlci1jb2xvcjtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYmcpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgJjpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAvLyB0aGUgbWl4aW4gaXMgbm90IHVzZWQgaGVyZSB0byBtYWtlIHN1cmUgdGhlcmUgaXMgZmVlZGJhY2tcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1ib3gtc2hhZG93LCAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZm9jdXMtYm94LXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAmOmZvY3VzOm5vdCg6Y2hlY2tlZCkgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICY6bm90KDpkaXNhYmxlZCk6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgIGNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1iZztcbiAgICBib3JkZXItY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJvcmRlci1jb2xvcjtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgLy8gVXNlIFtkaXNhYmxlZF0gYW5kIDpkaXNhYmxlZCB0byB3b3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI4MjQ3XG4gICZbZGlzYWJsZWRdLFxuICAmOmRpc2FibGVkIHtcbiAgICB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWxhYmVsLWRpc2FibGVkLWNvbG9yO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWRpc2FibGVkLWJnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBDdXN0b20gY29udHJvbCBpbmRpY2F0b3JzXG4vL1xuLy8gQnVpbGQgdGhlIGN1c3RvbSBjb250cm9scyBvdXQgb2YgcHNldWRvLWVsZW1lbnRzLlxuXG4uY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtbGFiZWwtY29sb3I7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGN1cnNvcjogJGN1c3RvbS1jb250cm9sLWN1cnNvcjtcblxuICAvLyBCYWNrZ3JvdW5kLWNvbG9yIGFuZCAod2hlbiBlbmFibGVkKSBncmFkaWVudFxuICAmOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICgkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSAtICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSkgLyAyO1xuICAgIGxlZnQ6IC0oJGN1c3RvbS1jb250cm9sLWd1dHRlciArICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgICBoZWlnaHQ6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc7XG4gICAgYm9yZGVyOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci1jb2xvciBzb2xpZCAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci13aWR0aDtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdyk7XG4gIH1cblxuICAvLyBGb3JlZ3JvdW5kIChpY29uKVxuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogKCRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlIC0gJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplKSAvIDI7XG4gICAgbGVmdDogLSgkY3VzdG9tLWNvbnRyb2wtZ3V0dGVyICsgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xuICAgIGhlaWdodDogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYmFja2dyb3VuZDogbm8tcmVwZWF0IDUwJSAvICN7JGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZy1zaXplfTtcbiAgfVxufVxuXG5cbi8vIENoZWNrYm94ZXNcbi8vXG4vLyBUd2VhayBqdXN0IGEgZmV3IHRoaW5ncyBmb3IgY2hlY2tib3hlcy5cblxuLmN1c3RvbS1jaGVja2JveCB7XG4gIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaWNvbi1jaGVja2VkKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJnKTtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1ib3gtc2hhZG93KTtcbiAgICB9XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGUpO1xuICAgIH1cbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB7XG4gICAgJjpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWRpc2FibGVkLWJnO1xuICAgIH1cbiAgICAmOmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtZGlzYWJsZWQtYmc7XG4gICAgfVxuICB9XG59XG5cbi8vIFJhZGlvc1xuLy9cbi8vIFR3ZWFrIGp1c3QgYSBmZXcgdGhpbmdzIGZvciByYWRpb3MuXG5cbi5jdXN0b20tcmFkaW8ge1xuICAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICAgIGJvcmRlci1yYWRpdXM6ICRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWJvcmRlci1yYWRpdXM7XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkY3VzdG9tLXJhZGlvLWluZGljYXRvci1pY29uLWNoZWNrZWQpO1xuICAgIH1cbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB7XG4gICAgJjpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWRpc2FibGVkLWJnO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIHN3aXRjaGVzXG4vL1xuLy8gVHdlYWsgYSBmZXcgdGhpbmdzIGZvciBzd2l0Y2hlc1xuXG4uY3VzdG9tLXN3aXRjaCB7XG4gIHBhZGRpbmctbGVmdDogJGN1c3RvbS1zd2l0Y2gtd2lkdGggKyAkY3VzdG9tLWNvbnRyb2wtZ3V0dGVyO1xuXG4gIC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IC0oJGN1c3RvbS1zd2l0Y2gtd2lkdGggKyAkY3VzdG9tLWNvbnRyb2wtZ3V0dGVyKTtcbiAgICAgIHdpZHRoOiAkY3VzdG9tLXN3aXRjaC13aWR0aDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICBib3JkZXItcmFkaXVzOiAkY3VzdG9tLXN3aXRjaC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICB0b3A6IGFkZCgoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgLSAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpIC8gMiwgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItd2lkdGggKiAyKTtcbiAgICAgIGxlZnQ6IGFkZCgtKCRjdXN0b20tc3dpdGNoLXdpZHRoICsgJGN1c3RvbS1jb250cm9sLWd1dHRlciksICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLXdpZHRoICogMik7XG4gICAgICB3aWR0aDogJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLXNpemU7XG4gICAgICBoZWlnaHQ6ICRjdXN0b20tc3dpdGNoLWluZGljYXRvci1zaXplO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItY29sb3I7XG4gICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICBib3JkZXItcmFkaXVzOiAkY3VzdG9tLXN3aXRjaC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1cztcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24odHJhbnNmb3JtIC4xNXMgZWFzZS1pbi1vdXQsICRjdXN0b20tZm9ybXMtdHJhbnNpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJGN1c3RvbS1zd2l0Y2gtd2lkdGggLSAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpO1xuICAgIH1cbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB7XG4gICAgJjpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWRpc2FibGVkLWJnO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFNlbGVjdFxuLy9cbi8vIFJlcGxhY2VzIHRoZSBicm93c2VyIGRlZmF1bHQgc2VsZWN0IHdpdGggYSBjdXN0b20gb25lLCBtb3N0bHkgcHVsbGVkIGZyb21cbi8vIGh0dHBzOi8vcHJpbWVyLmdpdGh1Yi5pby8uXG4vL1xuXG4uY3VzdG9tLXNlbGVjdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGN1c3RvbS1zZWxlY3QtaGVpZ2h0O1xuICBwYWRkaW5nOiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXkgKCRjdXN0b20tc2VsZWN0LXBhZGRpbmcteCArICRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nKSAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXkgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14O1xuICBmb250LWZhbWlseTogJGN1c3RvbS1zZWxlY3QtZm9udC1mYW1pbHk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY3VzdG9tLXNlbGVjdC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGN1c3RvbS1zZWxlY3QtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkY3VzdG9tLXNlbGVjdC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRjdXN0b20tc2VsZWN0LWNvbG9yO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBiYWNrZ3JvdW5kOiAkY3VzdG9tLXNlbGVjdC1iZyAkY3VzdG9tLXNlbGVjdC1iYWNrZ3JvdW5kO1xuICBib3JkZXI6ICRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aCBzb2xpZCAkY3VzdG9tLXNlbGVjdC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1zZWxlY3QtYm9yZGVyLXJhZGl1cywgMCk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1zZWxlY3QtYm94LXNoYWRvdyk7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3JkZXItY29sb3I7XG4gICAgb3V0bGluZTogMDtcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIGJveC1zaGFkb3c6ICRjdXN0b20tc2VsZWN0LWJveC1zaGFkb3csICRjdXN0b20tc2VsZWN0LWZvY3VzLWJveC1zaGFkb3c7XG4gICAgfSBAZWxzZSB7XG4gICAgICBib3gtc2hhZG93OiAkY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH1cblxuICAgICY6Oi1tcy12YWx1ZSB7XG4gICAgICAvLyBGb3IgdmlzdWFsIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgcGxhdGZvcm1zL2Jyb3dzZXJzLFxuICAgICAgLy8gc3VwcHJlc3MgdGhlIGRlZmF1bHQgd2hpdGUgdGV4dCBvbiBibHVlIGJhY2tncm91bmQgaGlnaGxpZ2h0IGdpdmVuIHRvXG4gICAgICAvLyB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRleHQgd2hlbiB0aGUgKHN0aWxsIGNsb3NlZCkgPHNlbGVjdD4gcmVjZWl2ZXMgZm9jdXNcbiAgICAgIC8vIGluIElFIGFuZCAodW5kZXIgY2VydGFpbiBjb25kaXRpb25zKSBFZGdlLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTkzOTguXG4gICAgICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJnO1xuICAgIH1cbiAgfVxuXG4gICZbbXVsdGlwbGVdLFxuICAmW3NpemVdOm5vdChbc2l6ZT1cIjFcIl0pIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgcGFkZGluZy1yaWdodDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjb2xvcjogJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtYmc7XG4gIH1cblxuICAvLyBIaWRlcyB0aGUgZGVmYXVsdCBjYXJldCBpbiBJRTExXG4gICY6Oi1tcy1leHBhbmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBSZW1vdmUgb3V0bGluZSBmcm9tIHNlbGVjdCBib3ggaW4gRkZcbiAgJjotbW96LWZvY3VzcmluZyB7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRleHQtc2hhZG93OiAwIDAgMCAkY3VzdG9tLXNlbGVjdC1jb2xvcjtcbiAgfVxufVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LXNtO1xuICBwYWRkaW5nLXRvcDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LXNtO1xuICBwYWRkaW5nLWJvdHRvbTogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LXNtO1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1zbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1zbSk7XG59XG5cbi5jdXN0b20tc2VsZWN0LWxnIHtcbiAgaGVpZ2h0OiAkY3VzdG9tLXNlbGVjdC1oZWlnaHQtbGc7XG4gIHBhZGRpbmctdG9wOiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXktbGc7XG4gIHBhZGRpbmctYm90dG9tOiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXktbGc7XG4gIHBhZGRpbmctbGVmdDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14LWxnO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplLWxnKTtcbn1cblxuXG4vLyBGaWxlXG4vL1xuLy8gQ3VzdG9tIGZpbGUgaW5wdXQuXG5cbi5jdXN0b20tZmlsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRjdXN0b20tZmlsZS1oZWlnaHQ7XG4gIG1hcmdpbjogMDtcbiAgb3BhY2l0eTogMDtcblxuICAmOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgICBib3JkZXItY29sb3I6ICRjdXN0b20tZmlsZS1mb2N1cy1ib3JkZXItY29sb3I7XG4gICAgYm94LXNoYWRvdzogJGN1c3RvbS1maWxlLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAvLyBVc2UgW2Rpc2FibGVkXSBhbmQgOmRpc2FibGVkIHRvIHdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjgyNDdcbiAgJltkaXNhYmxlZF0gfiAuY3VzdG9tLWZpbGUtbGFiZWwsXG4gICY6ZGlzYWJsZWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tZmlsZS1kaXNhYmxlZC1iZztcbiAgfVxuXG4gIEBlYWNoICRsYW5nLCAkdmFsdWUgaW4gJGN1c3RvbS1maWxlLXRleHQge1xuICAgICY6bGFuZygjeyRsYW5nfSkgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICR2YWx1ZTtcbiAgICB9XG4gIH1cblxuICB+IC5jdXN0b20tZmlsZS1sYWJlbFtkYXRhLWJyb3dzZV06OmFmdGVyIHtcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtYnJvd3NlKTtcbiAgfVxufVxuXG4uY3VzdG9tLWZpbGUtbGFiZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG4gIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgcGFkZGluZzogJGN1c3RvbS1maWxlLXBhZGRpbmcteSAkY3VzdG9tLWZpbGUtcGFkZGluZy14O1xuICBmb250LWZhbWlseTogJGN1c3RvbS1maWxlLWZvbnQtZmFtaWx5O1xuICBmb250LXdlaWdodDogJGN1c3RvbS1maWxlLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGN1c3RvbS1maWxlLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGN1c3RvbS1maWxlLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWZpbGUtYmc7XG4gIGJvcmRlcjogJGN1c3RvbS1maWxlLWJvcmRlci13aWR0aCBzb2xpZCAkY3VzdG9tLWZpbGUtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tZmlsZS1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWZpbGUtYm94LXNoYWRvdyk7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHotaW5kZXg6IDM7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0LWlubmVyO1xuICAgIHBhZGRpbmc6ICRjdXN0b20tZmlsZS1wYWRkaW5nLXkgJGN1c3RvbS1maWxlLXBhZGRpbmcteDtcbiAgICBsaW5lLWhlaWdodDogJGN1c3RvbS1maWxlLWxpbmUtaGVpZ2h0O1xuICAgIGNvbG9yOiAkY3VzdG9tLWZpbGUtYnV0dG9uLWNvbG9yO1xuICAgIGNvbnRlbnQ6IFwiQnJvd3NlXCI7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1maWxlLWJ1dHRvbi1iZyk7XG4gICAgYm9yZGVyLWxlZnQ6IGluaGVyaXQ7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwICRjdXN0b20tZmlsZS1ib3JkZXItcmFkaXVzICRjdXN0b20tZmlsZS1ib3JkZXItcmFkaXVzIDApO1xuICB9XG59XG5cbi8vIFJhbmdlXG4vL1xuLy8gU3R5bGUgcmFuZ2UgaW5wdXRzIHRoZSBzYW1lIGFjcm9zcyBicm93c2Vycy4gVmVuZG9yLXNwZWNpZmljIHJ1bGVzIGZvciBwc2V1ZG9cbi8vIGVsZW1lbnRzIGNhbm5vdCBiZSBtaXhlZC4gQXMgc3VjaCwgdGhlcmUgYXJlIG5vIHNoYXJlZCBzdHlsZXMgZm9yIGZvY3VzIG9yXG4vLyBhY3RpdmUgc3RhdGVzIG9uIHByZWZpeGVkIHNlbGVjdG9ycy5cblxuLmN1c3RvbS1yYW5nZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGFkZCgkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodCwgJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoICogMik7XG4gIHBhZGRpbmc6IDA7IC8vIE5lZWQgdG8gcmVzZXQgcGFkZGluZ1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgLy8gUHNldWRvLWVsZW1lbnRzIG11c3QgYmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIHJ1bGVzZXRzIHRvIGhhdmUgYW4gZWZmZWN0LlxuICAgIC8vIE5vIGJveC1zaGFkb3coKSBtaXhpbiBmb3IgZm9jdXMgYWNjZXNzaWJpbGl0eS5cbiAgICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7IGJveC1zaGFkb3c6ICRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzsgfVxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIgICAgIHsgYm94LXNoYWRvdzogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93OyB9XG4gICAgJjo6LW1zLXRodW1iICAgICAgICAgICAgeyBib3gtc2hhZG93OiAkY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c7IH1cbiAgfVxuXG4gICY6Oi1tb3otZm9jdXMtb3V0ZXIge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICB3aWR0aDogJGN1c3RvbS1yYW5nZS10aHVtYi13aWR0aDtcbiAgICBoZWlnaHQ6ICRjdXN0b20tcmFuZ2UtdGh1bWItaGVpZ2h0O1xuICAgIG1hcmdpbi10b3A6ICgkY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodCAtICRjdXN0b20tcmFuZ2UtdGh1bWItaGVpZ2h0KSAvIDI7IC8vIFdlYmtpdCBzcGVjaWZpY1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRjdXN0b20tcmFuZ2UtdGh1bWItYmcpO1xuICAgIGJvcmRlcjogJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1yYW5nZS10aHVtYi1ib3gtc2hhZG93KTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRjdXN0b20tZm9ybXMtdHJhbnNpdGlvbik7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRjdXN0b20tcmFuZ2UtdGh1bWItYWN0aXZlLWJnKTtcbiAgICB9XG4gIH1cblxuICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdHJhY2std2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7IC8vIFdoeT9cbiAgICBjdXJzb3I6ICRjdXN0b20tcmFuZ2UtdHJhY2stY3Vyc29yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tcmFuZ2UtdHJhY2stYmc7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tcmFuZ2UtdHJhY2stYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLXJhbmdlLXRyYWNrLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodDtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWJnKTtcbiAgICBib3JkZXI6ICRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tcmFuZ2UtdGh1bWItYm94LXNoYWRvdyk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWFjdGl2ZS1iZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdHJhY2std2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIEZpcmVmb3ggc3BlY2lmaWM/XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Oi1tcy10aHVtYiB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodDtcbiAgICBtYXJnaW4tdG9wOiAwOyAvLyBFZGdlIHNwZWNpZmljXG4gICAgbWFyZ2luLXJpZ2h0OiAkY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGg7IC8vIFdvcmthcm91bmQgdGhhdCBvdmVyZmxvd2VkIGJveC1zaGFkb3cgaXMgaGlkZGVuLlxuICAgIG1hcmdpbi1sZWZ0OiAkY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGg7ICAvLyBXb3JrYXJvdW5kIHRoYXQgb3ZlcmZsb3dlZCBib3gtc2hhZG93IGlzIGhpZGRlbi5cbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWJnKTtcbiAgICBib3JkZXI6ICRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tcmFuZ2UtdGh1bWItYm94LXNoYWRvdyk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWFjdGl2ZS1iZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6LW1zLXRyYWNrIHtcbiAgICB3aWR0aDogJGN1c3RvbS1yYW5nZS10cmFjay13aWR0aDtcbiAgICBoZWlnaHQ6ICRjdXN0b20tcmFuZ2UtdHJhY2staGVpZ2h0O1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjdXJzb3I6ICRjdXN0b20tcmFuZ2UtdHJhY2stY3Vyc29yO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodCAvIDI7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLXJhbmdlLXRyYWNrLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgJjo6LW1zLWZpbGwtbG93ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tcmFuZ2UtdHJhY2stYmc7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgJjo6LW1zLWZpbGwtdXBwZXIge1xuICAgIG1hcmdpbi1yaWdodDogMTVweDsgLy8gYXJiaXRyYXJ5P1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tcmFuZ2UtdHJhY2stYmc7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZztcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuXG4gICAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRodW1iLWRpc2FibGVkLWJnO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cblxuICAgICY6Oi1tcy10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRodW1iLWRpc2FibGVkLWJnO1xuICAgIH1cbiAgfVxufVxuXG4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSxcbi5jdXN0b20tZmlsZS1sYWJlbCxcbi5jdXN0b20tc2VsZWN0IHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIEtpY2tzdGFydCBhbnkgbmF2aWdhdGlvbiBjb21wb25lbnQgd2l0aCBhIHNldCBvZiBzdHlsZSByZXNldHMuIFdvcmtzIHdpdGhcbi8vIGA8bmF2PmBzLCBgPHVsPmBzIG9yIGA8b2w+YHMuXG5cbi5uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm5hdi1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRuYXYtbGluay1wYWRkaW5nLXkgJG5hdi1saW5rLXBhZGRpbmcteDtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZSBsaWdodGVucyB0ZXh0XG4gICYuZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkbmF2LWxpbmstZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG5cbi8vXG4vLyBUYWJzXG4vL1xuXG4ubmF2LXRhYnMge1xuICBib3JkZXItYm90dG9tOiAkbmF2LXRhYnMtYm9yZGVyLXdpZHRoIHNvbGlkICRuYXYtdGFicy1ib3JkZXItY29sb3I7XG5cbiAgLm5hdi1pdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgfVxuXG4gIC5uYXYtbGluayB7XG4gICAgYm9yZGVyOiAkbmF2LXRhYnMtYm9yZGVyLXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRuYXYtdGFicy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I7XG4gICAgfVxuXG4gICAgJi5kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIC5uYXYtbGluay5hY3RpdmUsXG4gIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XG4gICAgY29sb3I6ICRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIC8vIE1ha2UgZHJvcGRvd24gYm9yZGVyIG92ZXJsYXAgdGFiIGJvcmRlclxuICAgIG1hcmdpbi10b3A6IC0kbmF2LXRhYnMtYm9yZGVyLXdpZHRoO1xuICAgIC8vIFJlbW92ZSB0aGUgdG9wIHJvdW5kZWQgY29ybmVycyBoZXJlIHNpbmNlIHRoZXJlIGlzIGEgaGFyZCBlZGdlIGFib3ZlIHRoZSBtZW51XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoMCk7XG4gIH1cbn1cblxuXG4vL1xuLy8gUGlsbHNcbi8vXG5cbi5uYXYtcGlsbHMge1xuICAubmF2LWxpbmsge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJG5hdi1waWxscy1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gIC5uYXYtbGluay5hY3RpdmUsXG4gIC5zaG93ID4gLm5hdi1saW5rIHtcbiAgICBjb2xvcjogJG5hdi1waWxscy1saW5rLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnO1xuICB9XG59XG5cblxuLy9cbi8vIEp1c3RpZmllZCB2YXJpYW50c1xuLy9cblxuLm5hdi1maWxsIHtcbiAgLm5hdi1pdGVtIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuLm5hdi1qdXN0aWZpZWQge1xuICAubmF2LWl0ZW0ge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG5cbi8vIFRhYmJhYmxlIHRhYnNcbi8vXG4vLyBIaWRlIHRhYmJhYmxlIHBhbmVzIHRvIHN0YXJ0LCBzaG93IHRoZW0gd2hlbiBgLmFjdGl2ZWBcblxuLnRhYi1jb250ZW50IHtcbiAgPiAudGFiLXBhbmUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgPiAuYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiLy8gQ29udGVudHNcbi8vXG4vLyBOYXZiYXJcbi8vIE5hdmJhciBicmFuZFxuLy8gTmF2YmFyIG5hdlxuLy8gTmF2YmFyIHRleHRcbi8vIE5hdmJhciBkaXZpZGVyXG4vLyBSZXNwb25zaXZlIG5hdmJhclxuLy8gTmF2YmFyIHBvc2l0aW9uXG4vLyBOYXZiYXIgdGhlbWVzXG5cblxuLy8gTmF2YmFyXG4vL1xuLy8gUHJvdmlkZSBhIHN0YXRpYyBuYXZiYXIgZnJvbSB3aGljaCB3ZSBleHBhbmQgdG8gY3JlYXRlIGZ1bGwtd2lkdGgsIGZpeGVkLCBhbmRcbi8vIG90aGVyIG5hdmJhciB2YXJpYXRpb25zLlxuXG4ubmF2YmFyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7IC8vIGFsbG93IHVzIHRvIGRvIHRoZSBsaW5lIGJyZWFrIGZvciBjb2xsYXBzaW5nIGNvbnRlbnRcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyAvLyBzcGFjZSBvdXQgYnJhbmQgZnJvbSBsb2dvXG4gIHBhZGRpbmc6ICRuYXZiYXItcGFkZGluZy15ICRuYXZiYXItcGFkZGluZy14O1xuXG4gIC8vIEJlY2F1c2UgZmxleCBwcm9wZXJ0aWVzIGFyZW4ndCBpbmhlcml0ZWQsIHdlIG5lZWQgdG8gcmVkZWNsYXJlIHRoZXNlIGZpcnN0XG4gIC8vIGZldyBwcm9wZXJ0aWVzIHNvIHRoYXQgY29udGVudCBuZXN0ZWQgd2l0aGluIGJlaGF2ZSBwcm9wZXJseS5cbiAgJWNvbnRhaW5lci1mbGV4LXByb3BlcnRpZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG5cbiAgLmNvbnRhaW5lcixcbiAgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgQGV4dGVuZCAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcztcbiAgfVxuXG4gIEBlYWNoICRicmVha3BvaW50LCAkY29udGFpbmVyLW1heC13aWR0aCBpbiAkY29udGFpbmVyLW1heC13aWR0aHMge1xuICAgID4gLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGhzKX0ge1xuICAgICAgQGV4dGVuZCAlY29udGFpbmVyLWZsZXgtcHJvcGVydGllcztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgYnJhbmRcbi8vXG4vLyBVc2VkIGZvciBicmFuZCwgcHJvamVjdCwgb3Igc2l0ZSBuYW1lcy5cblxuLm5hdmJhci1icmFuZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXZiYXItYnJhbmQtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJG5hdmJhci1icmFuZC1wYWRkaW5nLXk7XG4gIG1hcmdpbi1yaWdodDogJG5hdmJhci1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxufVxuXG5cbi8vIE5hdmJhciBuYXZcbi8vXG4vLyBDdXN0b20gbmF2YmFyIG5hdmlnYXRpb24gKGRvZXNuJ3QgcmVxdWlyZSBgLm5hdmAsIGJ1dCBkb2VzIG1ha2UgdXNlIG9mIGAubmF2LWxpbmtgKS5cblxuLm5hdmJhci1uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyAvLyBjYW5ub3QgdXNlIGBpbmhlcml0YCB0byBnZXQgdGhlIGAubmF2YmFyYHMgdmFsdWVcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIC5uYXYtbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICAuZHJvcGRvd24tbWVudSB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBmbG9hdDogbm9uZTtcbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0ZXh0XG4vL1xuLy9cblxuLm5hdmJhci10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLXRvcDogJG5hdi1saW5rLXBhZGRpbmcteTtcbiAgcGFkZGluZy1ib3R0b206ICRuYXYtbGluay1wYWRkaW5nLXk7XG59XG5cblxuLy8gUmVzcG9uc2l2ZSBuYXZiYXJcbi8vXG4vLyBDdXN0b20gc3R5bGVzIGZvciByZXNwb25zaXZlIGNvbGxhcHNpbmcgYW5kIHRvZ2dsaW5nIG9mIG5hdmJhciBjb250ZW50cy5cbi8vIFBvd2VyZWQgYnkgdGhlIGNvbGxhcHNlIEJvb3RzdHJhcCBKYXZhU2NyaXB0IHBsdWdpbi5cblxuLy8gV2hlbiBjb2xsYXBzZWQsIHByZXZlbnQgdGhlIHRvZ2dsZWFibGUgbmF2YmFyIGNvbnRlbnRzIGZyb20gYXBwZWFyaW5nIGluXG4vLyB0aGUgZGVmYXVsdCBmbGV4Ym94IHJvdyBvcmllbnRhdGlvbi4gUmVxdWlyZXMgdGhlIHVzZSBvZiBgZmxleC13cmFwOiB3cmFwYFxuLy8gb24gdGhlIGAubmF2YmFyYCBwYXJlbnQuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgZmxleC1ncm93OiAxO1xuICAvLyBGb3IgYWx3YXlzIGV4cGFuZGVkIG9yIGV4dHJhIGZ1bGwgbmF2YmFycywgZW5zdXJlIGNvbnRlbnQgYWxpZ25zIGl0c2VsZlxuICAvLyBwcm9wZXJseSB2ZXJ0aWNhbGx5LiBDYW4gYmUgZWFzaWx5IG92ZXJyaWRkZW4gd2l0aCBmbGV4IHV0aWxpdGllcy5cbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLy8gQnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbmF2YmFyIHdoZW4gaW4gaXRzIGNvbGxhcHNlZCBzdGF0ZVxuLm5hdmJhci10b2dnbGVyIHtcbiAgcGFkZGluZzogJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteSAkbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14O1xuICBAaW5jbHVkZSBmb250LXNpemUoJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gcmVtb3ZlIGRlZmF1bHQgYnV0dG9uIHN0eWxlXG4gIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDsgLy8gcmVtb3ZlIGRlZmF1bHQgYnV0dG9uIHN0eWxlXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJG5hdmJhci10b2dnbGVyLWJvcmRlci1yYWRpdXMpO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxufVxuXG4vLyBLZWVwIGFzIGEgc2VwYXJhdGUgZWxlbWVudCBzbyBmb2xrcyBjYW4gZWFzaWx5IG92ZXJyaWRlIGl0IHdpdGggYW5vdGhlciBpY29uXG4vLyBvciBpbWFnZSBmaWxlIGFzIG5lZWRlZC5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cblxuLy8gR2VuZXJhdGUgc2VyaWVzIG9mIGAubmF2YmFyLWV4cGFuZC0qYCByZXNwb25zaXZlIGNsYXNzZXMgZm9yIGNvbmZpZ3VyaW5nXG4vLyB3aGVyZSB5b3VyIG5hdmJhciBjb2xsYXBzZXMuXG4ubmF2YmFyLWV4cGFuZCB7XG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkbmV4dCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgJiN7JGluZml4fSB7XG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgJWNvbnRhaW5lci1uYXZiYXItZXhwYW5kLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLmNvbnRhaW5lcixcbiAgICAgICAgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgICBAZXh0ZW5kICVjb250YWluZXItbmF2YmFyLWV4cGFuZC0jeyRicmVha3BvaW50fTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRzaXplLCAkY29udGFpbmVyLW1heC13aWR0aCBpbiAkY29udGFpbmVyLW1heC13aWR0aHMge1xuICAgICAgICAgID4gLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkc2l6ZSwgJGNvbnRhaW5lci1tYXgtd2lkdGhzKX0ge1xuICAgICAgICAgICAgQGV4dGVuZCAlY29udGFpbmVyLW5hdmJhci1leHBhbmQtI3skYnJlYWtwb2ludH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5leHQpIHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgICAgICAgLm5hdmJhci1uYXYge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cbiAgICAgICAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLm5hdi1saW5rIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRuYXZiYXItbmF2LWxpbmstcGFkZGluZy14O1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgbmVzdGluZyBjb250YWluZXJzLCBoYXZlIHRvIHJlZGVjbGFyZSBmb3IgYWxpZ25tZW50IHB1cnBvc2VzXG4gICAgICAgICVjb250YWluZXItbmVzdGluZy0jeyRicmVha3BvaW50fSB7XG4gICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5jb250YWluZXIsXG4gICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgQGV4dGVuZCAlY29udGFpbmVyLW5lc3RpbmctI3skYnJlYWtwb2ludH07XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkc2l6ZSwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAgICAgICA+IC5jb250YWluZXIje2JyZWFrcG9pbnQtaW5maXgoJHNpemUsICRjb250YWluZXItbWF4LXdpZHRocyl9IHtcbiAgICAgICAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1uZXN0aW5nLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXZiYXItY29sbGFwc2Uge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuICAgICAgICAgIC8vIENoYW5nZXMgZmxleC1iYXNlcyB0byBhdXRvIGJlY2F1c2Ugb2YgYW4gSUUxMCBidWdcbiAgICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuLy8gTmF2YmFyIHRoZW1lc1xuLy9cbi8vIFN0eWxlcyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gbmF2YmFycyB3aXRoIGxpZ2h0IG9yIGRhcmsgYmFja2dyb3VuZC5cblxuLy8gRGFyayBsaW5rcyBhZ2FpbnN0IGEgbGlnaHQgYmFja2dyb3VuZFxuLm5hdmJhci1saWdodCB7XG4gIC5uYXZiYXItYnJhbmQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWJyYW5kLWNvbG9yO1xuXG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1icmFuZC1ob3Zlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubmF2YmFyLW5hdiB7XG4gICAgLm5hdi1saW5rIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWNvbG9yO1xuXG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgICAgY29sb3I6ICRuYXZiYXItbGlnaHQtaG92ZXItY29sb3I7XG4gICAgICB9XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2hvdyA+IC5uYXYtbGluayxcbiAgICAuYWN0aXZlID4gLm5hdi1saW5rLFxuICAgIC5uYXYtbGluay5zaG93LFxuICAgIC5uYXYtbGluay5hY3RpdmUge1xuICAgICAgY29sb3I6ICRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgY29sb3I6ICRuYXZiYXItbGlnaHQtY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkbmF2YmFyLWxpZ2h0LXRvZ2dsZXItYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmcpO1xuICB9XG5cbiAgLm5hdmJhci10ZXh0IHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvcjtcblxuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gV2hpdGUgbGlua3MgYWdhaW5zdCBhIGRhcmsgYmFja2dyb3VuZFxuLm5hdmJhci1kYXJrIHtcbiAgLm5hdmJhci1icmFuZCB7XG4gICAgY29sb3I6ICRuYXZiYXItZGFyay1icmFuZC1jb2xvcjtcblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1icmFuZC1ob3Zlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubmF2YmFyLW5hdiB7XG4gICAgLm5hdi1saW5rIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstY29sb3I7XG5cbiAgICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWhvdmVyLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2hvdyA+IC5uYXYtbGluayxcbiAgICAuYWN0aXZlID4gLm5hdi1saW5rLFxuICAgIC5uYXYtbGluay5zaG93LFxuICAgIC5uYXYtbGluay5hY3RpdmUge1xuICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci10b2dnbGVyIHtcbiAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdmJhci1kYXJrLXRvZ2dsZXItYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZyk7XG4gIH1cblxuICAubmF2YmFyLXRleHQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstY29sb3I7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjtcblxuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAwOyAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMjI3NDAjaXNzdWVjb21tZW50LTMwNTg2ODEwNlxuICBoZWlnaHQ6ICRjYXJkLWhlaWdodDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1iZztcbiAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xuICBib3JkZXI6ICRjYXJkLWJvcmRlci13aWR0aCBzb2xpZCAkY2FyZC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGNhcmQtYm9yZGVyLXJhZGl1cyk7XG5cbiAgPiBociB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG5cbiAgPiAubGlzdC1ncm91cDpmaXJzdC1jaGlsZCB7XG4gICAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQge1xuICAgIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cbn1cblxuLmNhcmQtYm9keSB7XG4gIC8vIEVuYWJsZSBgZmxleC1ncm93OiAxYCBmb3IgZGVja3MgYW5kIGdyb3VwcyBzbyB0aGF0IGNhcmQgYmxvY2tzIHRha2UgdXBcbiAgLy8gYXMgbXVjaCBzcGFjZSBhcyBwb3NzaWJsZSwgZW5zdXJpbmcgZm9vdGVycyBhcmUgYWxpZ25lZCB0byB0aGUgYm90dG9tLlxuICBmbGV4OiAxIDEgYXV0bztcbiAgLy8gV29ya2Fyb3VuZCBmb3IgdGhlIGltYWdlIHNpemUgYnVnIGluIElFXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMjg4NTVcbiAgbWluLWhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteDtcbiAgY29sb3I6ICRjYXJkLWNvbG9yO1xufVxuXG4uY2FyZC10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206ICRjYXJkLXNwYWNlci15O1xufVxuXG4uY2FyZC1zdWJ0aXRsZSB7XG4gIG1hcmdpbi10b3A6IC0kY2FyZC1zcGFjZXIteSAvIDI7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jYXJkLXRleHQ6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jYXJkLWxpbmsge1xuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICArIC5jYXJkLWxpbmsge1xuICAgIG1hcmdpbi1sZWZ0OiAkY2FyZC1zcGFjZXIteDtcbiAgfVxufVxuXG4vL1xuLy8gT3B0aW9uYWwgdGV4dHVhbCBjYXBzXG4vL1xuXG4uY2FyZC1oZWFkZXIge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gUmVtb3ZlcyB0aGUgZGVmYXVsdCBtYXJnaW4tYm90dG9tIG9mIDxoTj5cbiAgY29sb3I6ICRjYXJkLWNhcC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY2FwLWJnO1xuICBib3JkZXItYm90dG9tOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzIDAgMCk7XG4gIH1cblxuICArIC5saXN0LWdyb3VwIHtcbiAgICAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgfVxuICB9XG59XG5cbi5jYXJkLWZvb3RlciB7XG4gIHBhZGRpbmc6ICRjYXJkLXNwYWNlci15ICRjYXJkLXNwYWNlci14O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1jYXAtYmc7XG4gIGJvcmRlci10b3A6ICRjYXJkLWJvcmRlci13aWR0aCBzb2xpZCAkY2FyZC1ib3JkZXItY29sb3I7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDAgMCAkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzICRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpO1xuICB9XG59XG5cblxuLy9cbi8vIEhlYWRlciBuYXZzXG4vL1xuXG4uY2FyZC1oZWFkZXItdGFicyB7XG4gIG1hcmdpbi1yaWdodDogLSRjYXJkLXNwYWNlci14IC8gMjtcbiAgbWFyZ2luLWJvdHRvbTogLSRjYXJkLXNwYWNlci15O1xuICBtYXJnaW4tbGVmdDogLSRjYXJkLXNwYWNlci14IC8gMjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtaGVhZGVyLXBpbGxzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtJGNhcmQtc3BhY2VyLXggLyAyO1xuICBtYXJnaW4tbGVmdDogLSRjYXJkLXNwYWNlci14IC8gMjtcbn1cblxuLy8gQ2FyZCBpbWFnZVxuLmNhcmQtaW1nLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcGFkZGluZzogJGNhcmQtaW1nLW92ZXJsYXktcGFkZGluZztcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLXRvcCxcbi5jYXJkLWltZy1ib3R0b20ge1xuICBmbGV4LXNocmluazogMDsgLy8gRm9yIElFOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI5Mzk2XG4gIHdpZHRoOiAxMDAlOyAvLyBSZXF1aXJlZCBiZWNhdXNlIHdlIHVzZSBmbGV4Ym94IGFuZCB0aGlzIGluaGVyZW50bHkgYXBwbGllcyBhbGlnbi1zZWxmOiBzdHJldGNoXG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy10b3Age1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLWJvdHRvbSB7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKCRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpO1xufVxuXG5cbi8vIENhcmQgZGVja1xuXG4uY2FyZC1kZWNrIHtcbiAgLmNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206ICRjYXJkLWRlY2stbWFyZ2luO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBtYXJnaW4tcmlnaHQ6IC0kY2FyZC1kZWNrLW1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogLSRjYXJkLWRlY2stbWFyZ2luO1xuXG4gICAgLmNhcmQge1xuICAgICAgLy8gRmxleGJ1Z3MgIzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MjZmxleGJ1Zy00XG4gICAgICBmbGV4OiAxIDAgMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRjYXJkLWRlY2stbWFyZ2luO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgdGhlIGRlZmF1bHRcbiAgICAgIG1hcmdpbi1sZWZ0OiAkY2FyZC1kZWNrLW1hcmdpbjtcbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gQ2FyZCBncm91cHNcbi8vXG5cbi5jYXJkLWdyb3VwIHtcbiAgLy8gVGhlIGNoaWxkIHNlbGVjdG9yIGFsbG93cyBuZXN0ZWQgYC5jYXJkYCB3aXRoaW4gYC5jYXJkLWdyb3VwYFxuICAvLyB0byBkaXNwbGF5IHByb3Blcmx5LlxuICA+IC5jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkY2FyZC1ncm91cC1tYXJnaW47XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIC8vIFRoZSBjaGlsZCBzZWxlY3RvciBhbGxvd3MgbmVzdGVkIGAuY2FyZGAgd2l0aGluIGAuY2FyZC1ncm91cGBcbiAgICAvLyB0byBkaXNwbGF5IHByb3Blcmx5LlxuICAgID4gLmNhcmQge1xuICAgICAgLy8gRmxleGJ1Z3MgIzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MjZmxleGJ1Zy00XG4gICAgICBmbGV4OiAxIDAgMCU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICArIC5jYXJkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgcm91bmRlZCBjb3JuZXJzXG4gICAgICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCxcbiAgICAgICAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20sXG4gICAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTtcblxuICAgICAgICAgIC5jYXJkLWltZy10b3AsXG4gICAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20sXG4gICAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIENvbHVtbnNcbi8vXG5cbi5jYXJkLWNvbHVtbnMge1xuICAuY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGNhcmQtY29sdW1ucy1tYXJnaW47XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgY29sdW1uLWNvdW50OiAkY2FyZC1jb2x1bW5zLWNvdW50O1xuICAgIGNvbHVtbi1nYXA6ICRjYXJkLWNvbHVtbnMtZ2FwO1xuICAgIG9ycGhhbnM6IDE7XG4gICAgd2lkb3dzOiAxO1xuXG4gICAgLmNhcmQge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvLyBEb24ndCBsZXQgdGhlbSB2ZXJ0aWNhbGx5IHNwYW4gbXVsdGlwbGUgY29sdW1uc1xuICAgICAgd2lkdGg6IDEwMCU7IC8vIERvbid0IGxldCB0aGVpciB3aWR0aCBjaGFuZ2VcbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gQWNjb3JkaW9uXG4vL1xuXG4uYWNjb3JkaW9uIHtcbiAgPiAuY2FyZCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICY6bm90KDpsYXN0LW9mLXR5cGUpIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygwKTtcbiAgICB9XG5cbiAgICAmOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoMCk7XG4gICAgfVxuXG4gICAgPiAuY2FyZC1oZWFkZXIge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IC0kY2FyZC1ib3JkZXItd2lkdGg7XG4gICAgfVxuICB9XG59XG4iLCIuYnJlYWRjcnVtYiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZzogJGJyZWFkY3J1bWItcGFkZGluZy15ICRicmVhZGNydW1iLXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogJGJyZWFkY3J1bWItbWFyZ2luLWJvdHRvbTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRicmVhZGNydW1iLWZvbnQtc2l6ZSk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRicmVhZGNydW1iLWJnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRicmVhZGNydW1iLWJvcmRlci1yYWRpdXMpO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtIHtcbiAgLy8gVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGJyZWFkY3J1bWJzIChieSBkZWZhdWx0LCBhIGZvcndhcmQtc2xhc2g6IFwiL1wiKVxuICArIC5icmVhZGNydW1iLWl0ZW0ge1xuICAgIHBhZGRpbmctbGVmdDogJGJyZWFkY3J1bWItaXRlbS1wYWRkaW5nO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLy8gU3VwcHJlc3MgdW5kZXJsaW5pbmcgb2YgdGhlIHNlcGFyYXRvciBpbiBtb2Rlcm4gYnJvd3NlcnNcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRicmVhZGNydW1iLWl0ZW0tcGFkZGluZztcbiAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yO1xuICAgICAgY29udGVudDogZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBJRTktMTEgaGFjayB0byBwcm9wZXJseSBoYW5kbGUgaHlwZXJsaW5rIHVuZGVybGluZXMgZm9yIGJyZWFkY3J1bWJzIGJ1aWx0XG4gIC8vIHdpdGhvdXQgYDx1bD5gcy4gVGhlIGA6OmJlZm9yZWAgcHNldWRvLWVsZW1lbnQgZ2VuZXJhdGVzIGFuIGVsZW1lbnRcbiAgLy8gKndpdGhpbiogdGhlIC5icmVhZGNydW1iLWl0ZW0gYW5kIHRoZXJlYnkgaW5oZXJpdHMgdGhlIGB0ZXh0LWRlY29yYXRpb25gLlxuICAvL1xuICAvLyBUbyB0cmljayBJRSBpbnRvIHN1cHByZXNzaW5nIHRoZSB1bmRlcmxpbmUsIHdlIGdpdmUgdGhlIHBzZXVkby1lbGVtZW50IGFuXG4gIC8vIHVuZGVybGluZSBhbmQgdGhlbiBpbW1lZGlhdGVseSByZW1vdmUgaXQuXG4gICsgLmJyZWFkY3J1bWItaXRlbTpob3Zlcjo6YmVmb3JlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgfVxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZHVwbGljYXRlLXNlbGVjdG9yc1xuICArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYi1hY3RpdmUtY29sb3I7XG4gIH1cbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCk7XG59XG5cbi5wYWdlLWxpbmsge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkcGFnaW5hdGlvbi1wYWRkaW5nLXkgJHBhZ2luYXRpb24tcGFkZGluZy14O1xuICBtYXJnaW4tbGVmdDogLSRwYWdpbmF0aW9uLWJvcmRlci13aWR0aDtcbiAgbGluZS1oZWlnaHQ6ICRwYWdpbmF0aW9uLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJHBhZ2luYXRpb24tY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwYWdpbmF0aW9uLWJnO1xuICBib3JkZXI6ICRwYWdpbmF0aW9uLWJvcmRlci13aWR0aCBzb2xpZCAkcGFnaW5hdGlvbi1ib3JkZXItY29sb3I7XG5cbiAgJjpob3ZlciB7XG4gICAgei1pbmRleDogMjtcbiAgICBjb2xvcjogJHBhZ2luYXRpb24taG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwYWdpbmF0aW9uLWhvdmVyLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgei1pbmRleDogMztcbiAgICBvdXRsaW5lOiAkcGFnaW5hdGlvbi1mb2N1cy1vdXRsaW5lO1xuICAgIGJveC1zaGFkb3c6ICRwYWdpbmF0aW9uLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cbn1cblxuLnBhZ2UtaXRlbSB7XG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIC5wYWdlLWxpbmsge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgIH1cbiAgfVxuICAmOmxhc3QtY2hpbGQge1xuICAgIC5wYWdlLWxpbmsge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygkYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUgLnBhZ2UtbGluayB7XG4gICAgei1pbmRleDogMztcbiAgICBjb2xvcjogJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwYWdpbmF0aW9uLWFjdGl2ZS1iZztcbiAgICBib3JkZXItY29sb3I6ICRwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICAmLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICAgIGNvbG9yOiAkcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAvLyBPcGluaW9uYXRlZDogcmVtb3ZlIHRoZSBcImhhbmRcIiBjdXJzb3Igc2V0IHByZXZpb3VzbHkgZm9yIC5wYWdlLWxpbmtcbiAgICBjdXJzb3I6IGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I7XG4gIH1cbn1cblxuXG4vL1xuLy8gU2l6aW5nXG4vL1xuXG4ucGFnaW5hdGlvbi1sZyB7XG4gIEBpbmNsdWRlIHBhZ2luYXRpb24tc2l6ZSgkcGFnaW5hdGlvbi1wYWRkaW5nLXktbGcsICRwYWdpbmF0aW9uLXBhZGRpbmcteC1sZywgJGZvbnQtc2l6ZS1sZywgJGxpbmUtaGVpZ2h0LWxnLCAkYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5wYWdpbmF0aW9uLXNtIHtcbiAgQGluY2x1ZGUgcGFnaW5hdGlvbi1zaXplKCRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbSwgJHBhZ2luYXRpb24tcGFkZGluZy14LXNtLCAkZm9udC1zaXplLXNtLCAkbGluZS1oZWlnaHQtc20sICRib3JkZXItcmFkaXVzLXNtKTtcbn1cbiIsIi8vIFBhZ2luYXRpb25cblxuQG1peGluIHBhZ2luYXRpb24tc2l6ZSgkcGFkZGluZy15LCAkcGFkZGluZy14LCAkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRib3JkZXItcmFkaXVzKSB7XG4gIC5wYWdlLWxpbmsge1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nLXkgJHBhZGRpbmcteDtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgfVxuXG4gIC5wYWdlLWl0ZW0ge1xuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygkYm9yZGVyLXJhZGl1cyk7XG4gICAgICB9XG4gICAgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygkYm9yZGVyLXJhZGl1cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBCYXNlIGNsYXNzXG4vL1xuLy8gUmVxdWlyZXMgb25lIG9mIHRoZSBjb250ZXh0dWFsLCBjb2xvciBtb2RpZmllciBjbGFzc2VzIGZvciBgY29sb3JgIGFuZFxuLy8gYGJhY2tncm91bmQtY29sb3JgLlxuXG4uYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6ICRiYWRnZS1wYWRkaW5nLXkgJGJhZGdlLXBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRiYWRnZS1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGJhZGdlLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogMTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJhZGdlLWJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRiYWRnZS10cmFuc2l0aW9uKTtcblxuICBAYXQtcm9vdCBhI3smfSB7XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gRW1wdHkgYmFkZ2VzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHlcbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBRdWljayBmaXggZm9yIGJhZGdlcyBpbiBidXR0b25zXG4uYnRuIC5iYWRnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuXG4vLyBQaWxsIGJhZGdlc1xuLy9cbi8vIE1ha2UgdGhlbSBleHRyYSByb3VuZGVkIHdpdGggYSBtb2RpZmllciB0byByZXBsYWNlIHYzJ3MgYmFkZ2VzLlxuXG4uYmFkZ2UtcGlsbCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRiYWRnZS1waWxsLXBhZGRpbmcteDtcbiAgcGFkZGluZy1sZWZ0OiAkYmFkZ2UtcGlsbC1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJhZGdlLXBpbGwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIENvbG9yc1xuLy9cbi8vIENvbnRleHR1YWwgdmFyaWF0aW9ucyAobGlua2VkIGJhZGdlcyBnZXQgZGFya2VyIG9uIDpob3ZlcikuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYmFkZ2UtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBiYWRnZS12YXJpYW50KCR2YWx1ZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBiYWRnZS12YXJpYW50KCRiZykge1xuICBjb2xvcjogY29sb3IteWlxKCRiZyk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiZztcblxuICBAYXQtcm9vdCBhI3smfSB7XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICBjb2xvcjogY29sb3IteWlxKCRiZyk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJnLCAxMCUpO1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJi5mb2N1cyB7XG4gICAgICBvdXRsaW5lOiAwO1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGJhZGdlLWZvY3VzLXdpZHRoIHJnYmEoJGJnLCAuNSk7XG4gICAgfVxuICB9XG59XG4iLCIuanVtYm90cm9uIHtcbiAgcGFkZGluZzogJGp1bWJvdHJvbi1wYWRkaW5nICgkanVtYm90cm9uLXBhZGRpbmcgLyAyKTtcbiAgbWFyZ2luLWJvdHRvbTogJGp1bWJvdHJvbi1wYWRkaW5nO1xuICBjb2xvcjogJGp1bWJvdHJvbi1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGp1bWJvdHJvbi1iZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYm9yZGVyLXJhZGl1cy1sZyk7XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAgIHBhZGRpbmc6ICgkanVtYm90cm9uLXBhZGRpbmcgKiAyKSAkanVtYm90cm9uLXBhZGRpbmc7XG4gIH1cbn1cblxuLmp1bWJvdHJvbi1mbHVpZCB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmFsZXJ0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAkYWxlcnQtcGFkZGluZy15ICRhbGVydC1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206ICRhbGVydC1tYXJnaW4tYm90dG9tO1xuICBib3JkZXI6ICRhbGVydC1ib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGFsZXJ0LWJvcmRlci1yYWRpdXMpO1xufVxuXG4vLyBIZWFkaW5ncyBmb3IgbGFyZ2VyIGFsZXJ0c1xuLmFsZXJ0LWhlYWRpbmcge1xuICAvLyBTcGVjaWZpZWQgdG8gcHJldmVudCBjb25mbGljdHMgb2YgY2hhbmdpbmcgJGhlYWRpbmdzLWNvbG9yXG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG4vLyBQcm92aWRlIGNsYXNzIGZvciBsaW5rcyB0aGF0IG1hdGNoIGFsZXJ0c1xuLmFsZXJ0LWxpbmsge1xuICBmb250LXdlaWdodDogJGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ7XG59XG5cblxuLy8gRGlzbWlzc2libGUgYWxlcnRzXG4vL1xuLy8gRXhwYW5kIHRoZSByaWdodCBwYWRkaW5nIGFuZCBhY2NvdW50IGZvciB0aGUgY2xvc2UgYnV0dG9uJ3MgcG9zaXRpb25pbmcuXG5cbi5hbGVydC1kaXNtaXNzaWJsZSB7XG4gIHBhZGRpbmctcmlnaHQ6ICRjbG9zZS1mb250LXNpemUgKyAkYWxlcnQtcGFkZGluZy14ICogMjtcblxuICAvLyBBZGp1c3QgY2xvc2UgbGluayBwb3NpdGlvblxuICAuY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmcteSAkYWxlcnQtcGFkZGluZy14O1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cblxuLy8gQWx0ZXJuYXRlIHN0eWxlc1xuLy9cbi8vIEdlbmVyYXRlIGNvbnRleHR1YWwgbW9kaWZpZXIgY2xhc3NlcyBmb3IgY29sb3JpemluZyB0aGUgYWxlcnQuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYWxlcnQtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBhbGVydC12YXJpYW50KHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJGFsZXJ0LWJnLWxldmVsKSwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAkYWxlcnQtYm9yZGVyLWxldmVsKSwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAkYWxlcnQtY29sb3ItbGV2ZWwpKTtcbiAgfVxufVxuIiwiQG1peGluIGFsZXJ0LXZhcmlhbnQoJGJhY2tncm91bmQsICRib3JkZXIsICRjb2xvcikge1xuICBjb2xvcjogJGNvbG9yO1xuICBAaW5jbHVkZSBncmFkaWVudC1iZygkYmFja2dyb3VuZCk7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcblxuICBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogZGFya2VuKCRib3JkZXIsIDUlKTtcbiAgfVxuXG4gIC5hbGVydC1saW5rIHtcbiAgICBjb2xvcjogZGFya2VuKCRjb2xvciwgMTAlKTtcbiAgfVxufVxuIiwiLy8gRGlzYWJsZSBhbmltYXRpb24gaWYgdHJhbnNpdGlvbnMgYXJlIGRpc2FibGVkXG5AaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XG4gIEBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMge1xuICAgIGZyb20geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkcHJvZ3Jlc3MtaGVpZ2h0IDA7IH1cbiAgICB0byB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfVxuICB9XG59XG5cbi5wcm9ncmVzcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogJHByb2dyZXNzLWhlaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLy8gZm9yY2Ugcm91bmRlZCBjb3JuZXJzIGJ5IGNyb3BwaW5nIGl0XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkcHJvZ3Jlc3MtZm9udC1zaXplKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRwcm9ncmVzcy1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkcHJvZ3Jlc3MtYm94LXNoYWRvdyk7XG59XG5cbi5wcm9ncmVzcy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICRwcm9ncmVzcy1iYXItY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJhci1iZztcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb24pO1xufVxuXG4ucHJvZ3Jlc3MtYmFyLXN0cmlwZWQge1xuICBAaW5jbHVkZSBncmFkaWVudC1zdHJpcGVkKCk7XG4gIGJhY2tncm91bmQtc2l6ZTogJHByb2dyZXNzLWhlaWdodCAkcHJvZ3Jlc3MtaGVpZ2h0O1xufVxuXG5AaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XG4gIC5wcm9ncmVzcy1iYXItYW5pbWF0ZWQge1xuICAgIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgJHByb2dyZXNzLWJhci1hbmltYXRpb24tdGltaW5nO1xuXG4gICAgQGlmICRlbmFibGUtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1tZWRpYS1xdWVyeSB7XG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIubWVkaWEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cblxuLm1lZGlhLWJvZHkge1xuICBmbGV4OiAxO1xufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIEVhc2lseSB1c2FibGUgb24gPHVsPiwgPG9sPiwgb3IgPGRpdj4uXG5cbi5saXN0LWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvLyBObyBuZWVkIHRvIHNldCBsaXN0LXN0eWxlOiBub25lOyBzaW5jZSAubGlzdC1ncm91cC1pdGVtIGlzIGJsb2NrIGxldmVsXG4gIHBhZGRpbmctbGVmdDogMDsgLy8gcmVzZXQgcGFkZGluZyBiZWNhdXNlIHVsIGFuZCBvbFxuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG5cbi8vIEludGVyYWN0aXZlIGxpc3QgaXRlbXNcbi8vXG4vLyBVc2UgYW5jaG9yIG9yIGJ1dHRvbiBlbGVtZW50cyBpbnN0ZWFkIG9mIGBsaWBzIG9yIGBkaXZgcyB0byBjcmVhdGUgaW50ZXJhY3RpdmVcbi8vIGxpc3QgaXRlbXMuIEluY2x1ZGVzIGFuIGV4dHJhIGAuYWN0aXZlYCBtb2RpZmllciBjbGFzcyBmb3Igc2VsZWN0ZWQgaXRlbXMuXG5cbi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHtcbiAgd2lkdGg6IDEwMCU7IC8vIEZvciBgPGJ1dHRvbj5gcyAoYW5jaG9ycyBiZWNvbWUgMTAwJSBieSBkZWZhdWx0IHRob3VnaClcbiAgY29sb3I6ICRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDsgLy8gRm9yIGA8YnV0dG9uPmBzIChhbmNob3JzIGluaGVyaXQpXG5cbiAgLy8gSG92ZXIgc3RhdGVcbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgei1pbmRleDogMTsgLy8gUGxhY2UgaG92ZXIvZm9jdXMgaXRlbXMgYWJvdmUgdGhlaXIgc2libGluZ3MgZm9yIHByb3BlciBib3JkZXIgc3R5bGluZ1xuICAgIGNvbG9yOiAkbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaXN0LWdyb3VwLWhvdmVyLWJnO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiAkbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc7XG4gIH1cbn1cblxuXG4vLyBJbmRpdmlkdWFsIGxpc3QgaXRlbXNcbi8vXG4vLyBVc2Ugb24gYGxpYHMgb3IgYGRpdmBzIHdpdGhpbiB0aGUgYC5saXN0LWdyb3VwYCBwYXJlbnQuXG5cbi5saXN0LWdyb3VwLWl0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteSAkbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDtcbiAgY29sb3I6ICRsaXN0LWdyb3VwLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlzdC1ncm91cC1iZztcbiAgYm9yZGVyOiAkbGlzdC1ncm91cC1ib3JkZXItd2lkdGggc29saWQgJGxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlzdC1ncm91cC1kaXNhYmxlZC1iZztcbiAgfVxuXG4gIC8vIEluY2x1ZGUgYm90aCBoZXJlIGZvciBgPGE+YHMgYW5kIGA8YnV0dG9uPmBzXG4gICYuYWN0aXZlIHtcbiAgICB6LWluZGV4OiAyOyAvLyBQbGFjZSBhY3RpdmUgaXRlbXMgYWJvdmUgdGhlaXIgc2libGluZ3MgZm9yIHByb3BlciBib3JkZXIgc3R5bGluZ1xuICAgIGNvbG9yOiAkbGlzdC1ncm91cC1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpc3QtZ3JvdXAtYWN0aXZlLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICYgKyAmIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgbWFyZ2luLXRvcDogLSRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBIb3Jpem9udGFsXG4vL1xuLy8gQ2hhbmdlIHRoZSBsYXlvdXQgb2YgbGlzdCBncm91cCBpdGVtcyBmcm9tIHZlcnRpY2FsIChkZWZhdWx0KSB0byBob3Jpem9udGFsLlxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAubGlzdC1ncm91cC1ob3Jpem9udGFsI3skaW5maXh9IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cbiAgICAgIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpO1xuICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmICsgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgICAgICAgYm9yZGVyLXRvcC13aWR0aDogJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoO1xuICAgICAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuXG4gICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0kbGlzdC1ncm91cC1ib3JkZXItd2lkdGg7XG4gICAgICAgICAgICBib3JkZXItbGVmdC13aWR0aDogJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIEZsdXNoIGxpc3QgaXRlbXNcbi8vXG4vLyBSZW1vdmUgYm9yZGVycyBhbmQgYm9yZGVyLXJhZGl1cyB0byBrZWVwIGxpc3QgZ3JvdXAgaXRlbXMgZWRnZS10by1lZGdlLiBNb3N0XG4vLyB1c2VmdWwgd2l0aGluIG90aGVyIGNvbXBvbmVudHMgKGUuZy4sIGNhcmRzKS5cblxuLmxpc3QtZ3JvdXAtZmx1c2gge1xuICAubGlzdC1ncm91cC1pdGVtIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuICAmOmxhc3QtY2hpbGQge1xuICAgIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIENvbnRleHR1YWwgdmFyaWFudHNcbi8vXG4vLyBBZGQgbW9kaWZpZXIgY2xhc3NlcyB0byBjaGFuZ2UgdGV4dCBhbmQgYmFja2dyb3VuZCBjb2xvciBvbiBpbmRpdmlkdWFsIGl0ZW1zLlxuLy8gT3JnYW5pemF0aW9uYWxseSwgdGhpcyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIGA6aG92ZXJgIHN0YXRlcy5cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIEBpbmNsdWRlIGxpc3QtZ3JvdXAtaXRlbS12YXJpYW50KCRjb2xvciwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAtOSksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgNikpO1xufVxuIiwiLy8gTGlzdCBHcm91cHNcblxuQG1peGluIGxpc3QtZ3JvdXAtaXRlbS12YXJpYW50KCRzdGF0ZSwgJGJhY2tncm91bmQsICRjb2xvcikge1xuICAubGlzdC1ncm91cC1pdGVtLSN7JHN0YXRlfSB7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICAgICYubGlzdC1ncm91cC1pdGVtLWFjdGlvbiB7XG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRiYWNrZ3JvdW5kLCA1JSk7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5jbG9zZSB7XG4gIGZsb2F0OiByaWdodDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRjbG9zZS1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGNsb3NlLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICRjbG9zZS1jb2xvcjtcbiAgdGV4dC1zaGFkb3c6ICRjbG9zZS10ZXh0LXNoYWRvdztcbiAgb3BhY2l0eTogLjU7XG5cbiAgLy8gT3ZlcnJpZGUgPGE+J3MgaG92ZXIgc3R5bGVcbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgY29sb3I6ICRjbG9zZS1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgIG9wYWNpdHk6IC43NTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciBidXR0b24gdmVyc2lvblxuLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuXG4vLyBJZiB5b3Ugd2FudCB0aGUgYW5jaG9yIHZlcnNpb24sIGl0IHJlcXVpcmVzIGBocmVmPVwiI1wiYC5cbi8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvY2xpY2sjU2FmYXJpX01vYmlsZVxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5idXR0b24uY2xvc2Uge1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4vLyBGdXR1cmUtcHJvb2YgZGlzYWJsaW5nIG9mIGNsaWNrcyBvbiBgPGE+YCBlbGVtZW50c1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5hLmNsb3NlLmRpc2FibGVkIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4iLCIudG9hc3Qge1xuICBtYXgtd2lkdGg6ICR0b2FzdC1tYXgtd2lkdGg7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8vIGNoZWFwIHJvdW5kZWQgY29ybmVycyBvbiBuZXN0ZWQgaXRlbXNcbiAgQGluY2x1ZGUgZm9udC1zaXplKCR0b2FzdC1mb250LXNpemUpO1xuICBjb2xvcjogJHRvYXN0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9hc3QtYmFja2dyb3VuZC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAkdG9hc3QtYm9yZGVyLXdpZHRoIHNvbGlkICR0b2FzdC1ib3JkZXItY29sb3I7XG4gIGJveC1zaGFkb3c6ICR0b2FzdC1ib3gtc2hhZG93O1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIG9wYWNpdHk6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHRvYXN0LWJvcmRlci1yYWRpdXMpO1xuXG4gICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHRvYXN0LXBhZGRpbmcteDtcbiAgfVxuXG4gICYuc2hvd2luZyB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICYuc2hvdyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICYuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4udG9hc3QtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogJHRvYXN0LXBhZGRpbmcteSAkdG9hc3QtcGFkZGluZy14O1xuICBjb2xvcjogJHRvYXN0LWhlYWRlci1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvYXN0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXItYm90dG9tOiAkdG9hc3QtYm9yZGVyLXdpZHRoIHNvbGlkICR0b2FzdC1oZWFkZXItYm9yZGVyLWNvbG9yO1xufVxuXG4udG9hc3QtYm9keSB7XG4gIHBhZGRpbmc6ICR0b2FzdC1wYWRkaW5nLXg7IC8vIGFwcGx5IHRvIGJvdGggdmVydGljYWwgYW5kIGhvcml6b250YWxcbn1cbiIsIi8vIC5tb2RhbC1vcGVuICAgICAgLSBib2R5IGNsYXNzIGZvciBraWxsaW5nIHRoZSBzY3JvbGxcbi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpblxuLy8gLm1vZGFsLWRpYWxvZyAgICAtIHBvc2l0aW9uaW5nIHNoZWxsIGZvciB0aGUgYWN0dWFsIG1vZGFsXG4vLyAubW9kYWwtY29udGVudCAgIC0gYWN0dWFsIG1vZGFsIHcvIGJnIGFuZCBjb3JuZXJzIGFuZCBzdHVmZlxuXG5cbi5tb2RhbC1vcGVuIHtcbiAgLy8gS2lsbCB0aGUgc2Nyb2xsIG9uIHRoZSBib2R5XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLm1vZGFsIHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxufVxuXG4vLyBDb250YWluZXIgdGhhdCB0aGUgbW9kYWwgc2Nyb2xscyB3aXRoaW5cbi5tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LW1vZGFsO1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAvLyBQcmV2ZW50IENocm9tZSBvbiBXaW5kb3dzIGZyb20gYWRkaW5nIGEgZm9jdXMgb3V0bGluZS4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMDk1MS5cbiAgb3V0bGluZTogMDtcbiAgLy8gV2UgZGVsaWJlcmF0ZWx5IGRvbid0IHVzZSBgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO2AgZHVlIHRvIGFcbiAgLy8gZ25hcmx5IGlPUyBTYWZhcmkgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzQyXG4gIC8vIFNlZSBhbHNvIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTc2OTVcbn1cblxuLy8gU2hlbGwgZGl2IHRvIHBvc2l0aW9uIHRoZSBtb2RhbCB3aXRoIGJvdHRvbSBwYWRkaW5nXG4ubW9kYWwtZGlhbG9nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogYXV0bztcbiAgbWFyZ2luOiAkbW9kYWwtZGlhbG9nLW1hcmdpbjtcbiAgLy8gYWxsb3cgY2xpY2tzIHRvIHBhc3MgdGhyb3VnaCBmb3IgY3VzdG9tIGNsaWNrIGhhbmRsaW5nIHRvIGNsb3NlIG1vZGFsXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gIC8vIFdoZW4gZmFkaW5nIGluIHRoZSBtb2RhbCwgYW5pbWF0ZSBpdCB0byBzbGlkZSBkb3duXG4gIC5tb2RhbC5mYWRlICYge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJG1vZGFsLXRyYW5zaXRpb24pO1xuICAgIHRyYW5zZm9ybTogJG1vZGFsLWZhZGUtdHJhbnNmb3JtO1xuICB9XG4gIC5tb2RhbC5zaG93ICYge1xuICAgIHRyYW5zZm9ybTogJG1vZGFsLXNob3ctdHJhbnNmb3JtO1xuICB9XG5cbiAgLy8gV2hlbiB0cnlpbmcgdG8gY2xvc2UsIGFuaW1hdGUgZm9jdXMgdG8gc2NhbGVcbiAgLm1vZGFsLm1vZGFsLXN0YXRpYyAmIHtcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1zY2FsZS10cmFuc2Zvcm07XG4gIH1cbn1cblxuLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgZGlzcGxheTogZmxleDsgLy8gSUUxMC8xMVxuICBtYXgtaGVpZ2h0OiBzdWJ0cmFjdCgxMDAlLCAkbW9kYWwtZGlhbG9nLW1hcmdpbiAqIDIpO1xuXG4gIC5tb2RhbC1jb250ZW50IHtcbiAgICBtYXgtaGVpZ2h0OiBzdWJ0cmFjdCgxMDB2aCwgJG1vZGFsLWRpYWxvZy1tYXJnaW4gKiAyKTsgLy8gSUUxMC8xMVxuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAubW9kYWwtaGVhZGVyLFxuICAubW9kYWwtZm9vdGVyIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgfVxuXG4gIC5tb2RhbC1ib2R5IHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiBzdWJ0cmFjdCgxMDAlLCAkbW9kYWwtZGlhbG9nLW1hcmdpbiAqIDIpO1xuXG4gIC8vIEVuc3VyZSBgbW9kYWwtZGlhbG9nLWNlbnRlcmVkYCBleHRlbmRzIHRoZSBmdWxsIGhlaWdodCBvZiB0aGUgdmlldyAoSUUxMC8xMSlcbiAgJjo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jazsgLy8gSUUxMFxuICAgIGhlaWdodDogc3VidHJhY3QoMTAwdmgsICRtb2RhbC1kaWFsb2ctbWFyZ2luICogMik7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxuXG4gIC8vIEVuc3VyZSBgLm1vZGFsLWJvZHlgIHNob3dzIHNjcm9sbGJhciAoSUUxMC8xMSlcbiAgJi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBY3R1YWwgbW9kYWxcbi5tb2RhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTsgLy8gRW5zdXJlIGAubW9kYWwtY29udGVudGAgZXh0ZW5kcyB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgcGFyZW50IGAubW9kYWwtZGlhbG9nYFxuICAvLyBjb3VudGVyYWN0IHRoZSBwb2ludGVyLWV2ZW50czogbm9uZTsgaW4gdGhlIC5tb2RhbC1kaWFsb2dcbiAgY29sb3I6ICRtb2RhbC1jb250ZW50LWNvbG9yO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1vZGFsLWNvbnRlbnQtYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoIHNvbGlkICRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXhzKTtcbiAgLy8gUmVtb3ZlIGZvY3VzIG91dGxpbmUgZnJvbSBvcGVuZWQgbW9kYWxcbiAgb3V0bGluZTogMDtcbn1cblxuLy8gTW9kYWwgYmFja2dyb3VuZFxuLm1vZGFsLWJhY2tkcm9wIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtbW9kYWwtYmFja2Ryb3A7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1vZGFsLWJhY2tkcm9wLWJnO1xuXG4gIC8vIEZhZGUgZm9yIGJhY2tkcm9wXG4gICYuZmFkZSB7IG9wYWNpdHk6IDA7IH1cbiAgJi5zaG93IHsgb3BhY2l0eTogJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk7IH1cbn1cblxuLy8gTW9kYWwgaGVhZGVyXG4vLyBUb3Agc2VjdGlvbiBvZiB0aGUgbW9kYWwgdy8gdGl0bGUgYW5kIGRpc21pc3Ncbi5tb2RhbC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgLy8gc28gdGhlIGNsb3NlIGJ0biBhbHdheXMgc3RheXMgb24gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IC8vIFB1dCBtb2RhbCBoZWFkZXIgZWxlbWVudHMgKHRpdGxlIGFuZCBkaXNtaXNzKSBvbiBvcHBvc2l0ZSBlbmRzXG4gIHBhZGRpbmc6ICRtb2RhbC1oZWFkZXItcGFkZGluZztcbiAgYm9yZGVyLWJvdHRvbTogJG1vZGFsLWhlYWRlci1ib3JkZXItd2lkdGggc29saWQgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRtb2RhbC1jb250ZW50LWlubmVyLWJvcmRlci1yYWRpdXMpO1xuXG4gIC5jbG9zZSB7XG4gICAgcGFkZGluZzogJG1vZGFsLWhlYWRlci1wYWRkaW5nO1xuICAgIC8vIGF1dG8gb24gdGhlIGxlZnQgZm9yY2UgaWNvbiB0byB0aGUgcmlnaHQgZXZlbiB3aGVuIHRoZXJlIGlzIG5vIC5tb2RhbC10aXRsZVxuICAgIG1hcmdpbjogKC0kbW9kYWwtaGVhZGVyLXBhZGRpbmcteSkgKC0kbW9kYWwtaGVhZGVyLXBhZGRpbmcteCkgKC0kbW9kYWwtaGVhZGVyLXBhZGRpbmcteSkgYXV0bztcbiAgfVxufVxuXG4vLyBUaXRsZSB0ZXh0IHdpdGhpbiBoZWFkZXJcbi5tb2RhbC10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpbmUtaGVpZ2h0OiAkbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ7XG59XG5cbi8vIE1vZGFsIGJvZHlcbi8vIFdoZXJlIGFsbCBtb2RhbCBjb250ZW50IHJlc2lkZXMgKHNpYmxpbmcgb2YgLm1vZGFsLWhlYWRlciBhbmQgLm1vZGFsLWZvb3Rlcilcbi5tb2RhbC1ib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgc28gdGhhdCB0aGUgYm9keSB0YWtlIHVwIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGVcbiAgLy8gd2hlbiB0aGVyZSBzaG91bGQgYmUgYSBmaXhlZCBoZWlnaHQgb24gYC5tb2RhbC1kaWFsb2dgLlxuICBmbGV4OiAxIDEgYXV0bztcbiAgcGFkZGluZzogJG1vZGFsLWlubmVyLXBhZGRpbmc7XG59XG5cbi8vIEZvb3RlciAoZm9yIGFjdGlvbnMpXG4ubW9kYWwtZm9vdGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyOyAvLyB2ZXJ0aWNhbGx5IGNlbnRlclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyAvLyBSaWdodCBhbGlnbiBidXR0b25zIHdpdGggZmxleCBwcm9wZXJ0eSBiZWNhdXNlIHRleHQtYWxpZ24gZG9lc24ndCB3b3JrIG9uIGZsZXggaXRlbXNcbiAgcGFkZGluZzogJG1vZGFsLWlubmVyLXBhZGRpbmcgLSAkbW9kYWwtZm9vdGVyLW1hcmdpbi1iZXR3ZWVuIC8gMjtcbiAgYm9yZGVyLXRvcDogJG1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGggc29saWQgJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKCRtb2RhbC1jb250ZW50LWlubmVyLWJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIFBsYWNlIG1hcmdpbiBiZXR3ZWVuIGZvb3RlciBlbGVtZW50c1xuICAvLyBUaGlzIHNvbHV0aW9uIGlzIGZhciBmcm9tIGlkZWFsIGJlY2F1c2Ugb2YgdGhlIHVuaXZlcnNhbCBzZWxlY3RvciB1c2FnZSxcbiAgLy8gYnV0IGlzIG5lZWRlZCB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDgwMFxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VsZWN0b3ItbWF4LXVuaXZlcnNhbFxuICA+ICoge1xuICAgIG1hcmdpbjogJG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2VlbiAvIDI7XG4gIH1cbn1cblxuLy8gTWVhc3VyZSBzY3JvbGxiYXIgd2lkdGggZm9yIHBhZGRpbmcgYm9keSBkdXJpbmcgbW9kYWwgc2hvdy9oaWRlXG4ubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTk5OTlweDtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cblxuLy8gU2NhbGUgdXAgdGhlIG1vZGFsXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gIC8vIEF1dG9tYXRpY2FsbHkgc2V0IG1vZGFsJ3Mgd2lkdGggZm9yIGxhcmdlciB2aWV3cG9ydHNcbiAgLm1vZGFsLWRpYWxvZyB7XG4gICAgbWF4LXdpZHRoOiAkbW9kYWwtbWQ7XG4gICAgbWFyZ2luOiAkbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwIGF1dG87XG4gIH1cblxuICAubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICAgIG1heC1oZWlnaHQ6IHN1YnRyYWN0KDEwMCUsICRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXAgKiAyKTtcblxuICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgIG1heC1oZWlnaHQ6IHN1YnRyYWN0KDEwMHZoLCAkbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwICogMik7XG4gICAgfVxuICB9XG5cbiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7XG4gICAgbWluLWhlaWdodDogc3VidHJhY3QoMTAwJSwgJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cCAqIDIpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGhlaWdodDogc3VidHJhY3QoMTAwdmgsICRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXAgKiAyKTtcbiAgICB9XG4gIH1cblxuICAubW9kYWwtY29udGVudCB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwKTtcbiAgfVxuXG4gIC5tb2RhbC1zbSB7IG1heC13aWR0aDogJG1vZGFsLXNtOyB9XG59XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgLm1vZGFsLWxnLFxuICAubW9kYWwteGwge1xuICAgIG1heC13aWR0aDogJG1vZGFsLWxnO1xuICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoeGwpIHtcbiAgLm1vZGFsLXhsIHsgbWF4LXdpZHRoOiAkbW9kYWwteGw7IH1cbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi50b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAkemluZGV4LXRvb2x0aXA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46ICR0b29sdGlwLW1hcmdpbjtcbiAgLy8gT3VyIHBhcmVudCBlbGVtZW50IGNhbiBiZSBhcmJpdHJhcnkgc2luY2UgdG9vbHRpcHMgYXJlIGJ5IGRlZmF1bHQgaW5zZXJ0ZWQgYXMgYSBzaWJsaW5nIG9mIHRoZWlyIHRhcmdldCBlbGVtZW50LlxuICAvLyBTbyByZXNldCBvdXIgZm9udCBhbmQgdGV4dCBwcm9wZXJ0aWVzIHRvIGF2b2lkIGluaGVyaXRpbmcgd2VpcmQgdmFsdWVzLlxuICBAaW5jbHVkZSByZXNldC10ZXh0KCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkdG9vbHRpcC1mb250LXNpemUpO1xuICAvLyBBbGxvdyBicmVha2luZyB2ZXJ5IGxvbmcgd29yZHMgc28gdGhleSBkb24ndCBvdmVyZmxvdyB0aGUgdG9vbHRpcCdzIGJvdW5kc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJi5zaG93IHsgb3BhY2l0eTogJHRvb2x0aXAtb3BhY2l0eTsgfVxuXG4gIC5hcnJvdyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAkdG9vbHRpcC1hcnJvdy13aWR0aDtcbiAgICBoZWlnaHQ6ICR0b29sdGlwLWFycm93LWhlaWdodDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLXRvcCB7XG4gIHBhZGRpbmc6ICR0b29sdGlwLWFycm93LWhlaWdodCAwO1xuXG4gIC5hcnJvdyB7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJvcmRlci13aWR0aDogJHRvb2x0aXAtYXJyb3ctaGVpZ2h0ICgkdG9vbHRpcC1hcnJvdy13aWR0aCAvIDIpIDA7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkdG9vbHRpcC1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXRvb2x0aXAtcmlnaHQge1xuICBwYWRkaW5nOiAwICR0b29sdGlwLWFycm93LWhlaWdodDtcblxuICAuYXJyb3cge1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6ICR0b29sdGlwLWFycm93LWhlaWdodDtcbiAgICBoZWlnaHQ6ICR0b29sdGlwLWFycm93LXdpZHRoO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHRvb2x0aXAtYXJyb3ctd2lkdGggLyAyKSAkdG9vbHRpcC1hcnJvdy1oZWlnaHQgKCR0b29sdGlwLWFycm93LXdpZHRoIC8gMikgMDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLWJvdHRvbSB7XG4gIHBhZGRpbmc6ICR0b29sdGlwLWFycm93LWhlaWdodCAwO1xuXG4gIC5hcnJvdyB7XG4gICAgdG9wOiAwO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGJvcmRlci13aWR0aDogMCAoJHRvb2x0aXAtYXJyb3ctd2lkdGggLyAyKSAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkdG9vbHRpcC1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXRvb2x0aXAtbGVmdCB7XG4gIHBhZGRpbmc6IDAgJHRvb2x0aXAtYXJyb3ctaGVpZ2h0O1xuXG4gIC5hcnJvdyB7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6ICR0b29sdGlwLWFycm93LWhlaWdodDtcbiAgICBoZWlnaHQ6ICR0b29sdGlwLWFycm93LXdpZHRoO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICgkdG9vbHRpcC1hcnJvdy13aWR0aCAvIDIpIDAgKCR0b29sdGlwLWFycm93LXdpZHRoIC8gMikgJHRvb2x0aXAtYXJyb3ctaGVpZ2h0O1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICR0b29sdGlwLWFycm93LWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtdG9vbHRpcC1hdXRvIHtcbiAgJlt4LXBsYWNlbWVudF49XCJ0b3BcIl0ge1xuICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtdG9wO1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwicmlnaHRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtcmlnaHQ7XG4gIH1cbiAgJlt4LXBsYWNlbWVudF49XCJib3R0b21cIl0ge1xuICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtYm90dG9tO1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtdG9vbHRpcC1sZWZ0O1xuICB9XG59XG5cbi8vIFdyYXBwZXIgZm9yIHRoZSB0b29sdGlwIGNvbnRlbnRcbi50b29sdGlwLWlubmVyIHtcbiAgbWF4LXdpZHRoOiAkdG9vbHRpcC1tYXgtd2lkdGg7XG4gIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmcteSAkdG9vbHRpcC1wYWRkaW5nLXg7XG4gIGNvbG9yOiAkdG9vbHRpcC1jb2xvcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbHRpcC1iZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkdG9vbHRpcC1ib3JkZXItcmFkaXVzKTtcbn1cbiIsIkBtaXhpbiByZXNldC10ZXh0KCkge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJhc2U7XG4gIC8vIFdlIGRlbGliZXJhdGVseSBkbyBOT1QgcmVzZXQgZm9udC1zaXplIG9yIHdvcmQtd3JhcC5cbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBGYWxsYmFjayBmb3Igd2hlcmUgYHN0YXJ0YCBpcyBub3Qgc3VwcG9ydGVkXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgbGluZS1icmVhazogYXV0bztcbn1cbiIsIi5wb3BvdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtcG9wb3ZlcjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogJHBvcG92ZXItbWF4LXdpZHRoO1xuICAvLyBPdXIgcGFyZW50IGVsZW1lbnQgY2FuIGJlIGFyYml0cmFyeSBzaW5jZSB0b29sdGlwcyBhcmUgYnkgZGVmYXVsdCBpbnNlcnRlZCBhcyBhIHNpYmxpbmcgb2YgdGhlaXIgdGFyZ2V0IGVsZW1lbnQuXG4gIC8vIFNvIHJlc2V0IG91ciBmb250IGFuZCB0ZXh0IHByb3BlcnRpZXMgdG8gYXZvaWQgaW5oZXJpdGluZyB3ZWlyZCB2YWx1ZXMuXG4gIEBpbmNsdWRlIHJlc2V0LXRleHQoKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRwb3BvdmVyLWZvbnQtc2l6ZSk7XG4gIC8vIEFsbG93IGJyZWFraW5nIHZlcnkgbG9uZyB3b3JkcyBzbyB0aGV5IGRvbid0IG92ZXJmbG93IHRoZSBwb3BvdmVyJ3MgYm91bmRzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHBvcG92ZXItYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJHBvcG92ZXItYm9yZGVyLXdpZHRoIHNvbGlkICRwb3BvdmVyLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkcG9wb3Zlci1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkcG9wb3Zlci1ib3gtc2hhZG93KTtcblxuICAuYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogJHBvcG92ZXItYXJyb3ctd2lkdGg7XG4gICAgaGVpZ2h0OiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG4gICAgbWFyZ2luOiAwICRwb3BvdmVyLWJvcmRlci1yYWRpdXM7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxuICB9XG59XG5cbi5icy1wb3BvdmVyLXRvcCB7XG4gIG1hcmdpbi1ib3R0b206ICRwb3BvdmVyLWFycm93LWhlaWdodDtcblxuICA+IC5hcnJvdyB7XG4gICAgYm90dG9tOiBzdWJ0cmFjdCgtJHBvcG92ZXItYXJyb3ctaGVpZ2h0LCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGJvcmRlci13aWR0aDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0ICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpIDA7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBib3R0b206ICRwb3BvdmVyLWJvcmRlci13aWR0aDtcbiAgICAgIGJvcmRlci13aWR0aDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0ICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpIDA7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXBvcG92ZXItcmlnaHQge1xuICBtYXJnaW4tbGVmdDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuXG4gID4gLmFycm93IHtcbiAgICBsZWZ0OiBzdWJ0cmFjdCgtJHBvcG92ZXItYXJyb3ctaGVpZ2h0LCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuICAgIHdpZHRoOiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkcG9wb3Zlci1hcnJvdy13aWR0aDtcbiAgICBtYXJnaW46ICRwb3BvdmVyLWJvcmRlci1yYWRpdXMgMDsgLy8gbWFrZSBzdXJlIHRoZSBhcnJvdyBkb2VzIG5vdCB0b3VjaCB0aGUgcG9wb3ZlcidzIHJvdW5kZWQgY29ybmVyc1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBsZWZ0OiAkcG9wb3Zlci1ib3JkZXItd2lkdGg7XG4gICAgICBib3JkZXItd2lkdGg6ICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXBvcG92ZXItYm90dG9tIHtcbiAgbWFyZ2luLXRvcDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuXG4gID4gLmFycm93IHtcbiAgICB0b3A6IHN1YnRyYWN0KC0kcG9wb3Zlci1hcnJvdy1oZWlnaHQsICRwb3BvdmVyLWJvcmRlci13aWR0aCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKTtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHRvcDogJHBvcG92ZXItYm9yZGVyLXdpZHRoO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKTtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRwb3BvdmVyLWFycm93LWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgd2lsbCByZW1vdmUgdGhlIHBvcG92ZXItaGVhZGVyJ3MgYm9yZGVyIGp1c3QgYmVsb3cgdGhlIGFycm93XG4gIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogJHBvcG92ZXItYXJyb3ctd2lkdGg7XG4gICAgbWFyZ2luLWxlZnQ6IC0kcG9wb3Zlci1hcnJvdy13aWR0aCAvIDI7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBib3JkZXItYm90dG9tOiAkcG9wb3Zlci1ib3JkZXItd2lkdGggc29saWQgJHBvcG92ZXItaGVhZGVyLWJnO1xuICB9XG59XG5cbi5icy1wb3BvdmVyLWxlZnQge1xuICBtYXJnaW4tcmlnaHQ6ICRwb3BvdmVyLWFycm93LWhlaWdodDtcblxuICA+IC5hcnJvdyB7XG4gICAgcmlnaHQ6IHN1YnRyYWN0KC0kcG9wb3Zlci1hcnJvdy1oZWlnaHQsICRwb3BvdmVyLWJvcmRlci13aWR0aCk7XG4gICAgd2lkdGg6ICRwb3BvdmVyLWFycm93LWhlaWdodDtcbiAgICBoZWlnaHQ6ICRwb3BvdmVyLWFycm93LXdpZHRoO1xuICAgIG1hcmdpbjogJHBvcG92ZXItYm9yZGVyLXJhZGl1cyAwOyAvLyBtYWtlIHN1cmUgdGhlIGFycm93IGRvZXMgbm90IHRvdWNoIHRoZSBwb3BvdmVyJ3Mgcm91bmRlZCBjb3JuZXJzXG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpIDAgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMikgJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHJpZ2h0OiAkcG9wb3Zlci1ib3JkZXItd2lkdGg7XG4gICAgICBib3JkZXItd2lkdGg6ICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpIDAgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMikgJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRwb3BvdmVyLWFycm93LWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtcG9wb3Zlci1hdXRvIHtcbiAgJlt4LXBsYWNlbWVudF49XCJ0b3BcIl0ge1xuICAgIEBleHRlbmQgLmJzLXBvcG92ZXItdG9wO1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwicmlnaHRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXBvcG92ZXItcmlnaHQ7XG4gIH1cbiAgJlt4LXBsYWNlbWVudF49XCJib3R0b21cIl0ge1xuICAgIEBleHRlbmQgLmJzLXBvcG92ZXItYm90dG9tO1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gICAgQGV4dGVuZCAuYnMtcG9wb3Zlci1sZWZ0O1xuICB9XG59XG5cblxuLy8gT2Zmc2V0IHRoZSBwb3BvdmVyIHRvIGFjY291bnQgZm9yIHRoZSBwb3BvdmVyIGFycm93XG4ucG9wb3Zlci1oZWFkZXIge1xuICBwYWRkaW5nOiAkcG9wb3Zlci1oZWFkZXItcGFkZGluZy15ICRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIFJlc2V0IHRoZSBkZWZhdWx0IGZyb20gUmVib290XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLWJhc2UpO1xuICBjb2xvcjogJHBvcG92ZXItaGVhZGVyLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcG9wb3Zlci1oZWFkZXItYmc7XG4gIGJvcmRlci1ib3R0b206ICRwb3BvdmVyLWJvcmRlci13aWR0aCBzb2xpZCBkYXJrZW4oJHBvcG92ZXItaGVhZGVyLWJnLCA1JSk7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRwb3BvdmVyLWlubmVyLWJvcmRlci1yYWRpdXMpO1xuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnBvcG92ZXItYm9keSB7XG4gIHBhZGRpbmc6ICRwb3BvdmVyLWJvZHktcGFkZGluZy15ICRwb3BvdmVyLWJvZHktcGFkZGluZy14O1xuICBjb2xvcjogJHBvcG92ZXItYm9keS1jb2xvcjtcbn1cbiIsIi8vIE5vdGVzIG9uIHRoZSBjbGFzc2VzOlxuLy9cbi8vIDEuIC5jYXJvdXNlbC5wb2ludGVyLWV2ZW50IHNob3VsZCBpZGVhbGx5IGJlIHBhbi15ICh0byBhbGxvdyBmb3IgdXNlcnMgdG8gc2Nyb2xsIHZlcnRpY2FsbHkpXG4vLyAgICBldmVuIHdoZW4gdGhlaXIgc2Nyb2xsIGFjdGlvbiBzdGFydGVkIG9uIGEgY2Fyb3VzZWwsIGJ1dCBmb3IgY29tcGF0aWJpbGl0eSAod2l0aCBGaXJlZm94KVxuLy8gICAgd2UncmUgcHJldmVudGluZyBhbGwgYWN0aW9ucyBpbnN0ZWFkXG4vLyAyLiBUaGUgLmNhcm91c2VsLWl0ZW0tbGVmdCBhbmQgLmNhcm91c2VsLWl0ZW0tcmlnaHQgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGVyZVxuLy8gICAgdGhlIGFjdGl2ZSBzbGlkZSBpcyBoZWFkaW5nLlxuLy8gMy4gLmFjdGl2ZS5jYXJvdXNlbC1pdGVtIGlzIHRoZSBjdXJyZW50IHNsaWRlLlxuLy8gNC4gLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgYW5kIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCBpcyB0aGUgY3VycmVudFxuLy8gICAgc2xpZGUgaW4gaXRzIGluLXRyYW5zaXRpb24gc3RhdGUuIE9ubHkgb25lIG9mIHRoZXNlIG9jY3VycyBhdCBhIHRpbWUuXG4vLyA1LiAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCBhbmQgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0XG4vLyAgICBpcyB0aGUgdXBjb21pbmcgc2xpZGUgaW4gdHJhbnNpdGlvbi5cblxuLmNhcm91c2VsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2Fyb3VzZWwucG9pbnRlci1ldmVudCB7XG4gIHRvdWNoLWFjdGlvbjogcGFuLXk7XG59XG5cbi5jYXJvdXNlbC1pbm5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGNsZWFyZml4KCk7XG59XG5cbi5jYXJvdXNlbC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBub25lO1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY2Fyb3VzZWwtdHJhbnNpdGlvbik7XG59XG5cbi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSxcbi5jYXJvdXNlbC1pdGVtLW5leHQsXG4uY2Fyb3VzZWwtaXRlbS1wcmV2IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jYXJvdXNlbC1pdGVtLW5leHQ6bm90KC5jYXJvdXNlbC1pdGVtLWxlZnQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1wcmV2Om5vdCguY2Fyb3VzZWwtaXRlbS1yaWdodCksXG4uYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG59XG5cblxuLy9cbi8vIEFsdGVybmF0ZSB0cmFuc2l0aW9uc1xuLy9cblxuLmNhcm91c2VsLWZhZGUge1xuICAuY2Fyb3VzZWwtaXRlbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5O1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSxcbiAgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsXG4gIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gICAgei1pbmRleDogMTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsXG4gIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gICAgei1pbmRleDogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAwcyAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gIH1cbn1cblxuXG4vL1xuLy8gTGVmdC9yaWdodCBjb250cm9scyBmb3IgbmF2XG4vL1xuXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDE7XG4gIC8vIFVzZSBmbGV4IGZvciBhbGlnbm1lbnQgKDEtMylcbiAgZGlzcGxheTogZmxleDsgLy8gMS4gYWxsb3cgZmxleCBzdHlsZXNcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLy8gMi4gdmVydGljYWxseSBjZW50ZXIgY29udGVudHNcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IC8vIDMuIGhvcml6b250YWxseSBjZW50ZXIgY29udGVudHNcbiAgd2lkdGg6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBjb2xvcjogJGNhcm91c2VsLWNvbnRyb2wtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3BhY2l0eTogJGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uKTtcblxuICAvLyBIb3Zlci9mb2N1cyBzdGF0ZVxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICBjb2xvcjogJGNhcm91c2VsLWNvbnRyb2wtY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgb3BhY2l0eTogJGNhcm91c2VsLWNvbnRyb2wtaG92ZXItb3BhY2l0eTtcbiAgfVxufVxuLmNhcm91c2VsLWNvbnRyb2wtcHJldiB7XG4gIGxlZnQ6IDA7XG4gIEBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKCRibGFjaywgLjI1KSwgcmdiYSgkYmxhY2ssIC4wMDEpKTtcbiAgfVxufVxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIHJpZ2h0OiAwO1xuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsIHJnYmEoJGJsYWNrLCAuMjUpLCByZ2JhKCRibGFjaywgLjAwMSkpO1xuICB9XG59XG5cbi8vIEljb25zIGZvciB3aXRoaW5cbi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg7XG4gIGhlaWdodDogJGNhcm91c2VsLWNvbnRyb2wtaWNvbi13aWR0aDtcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IDUwJSAvIDEwMCUgMTAwJTtcbn1cbi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLWJnKTtcbn1cbi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uLWJnKTtcbn1cblxuXG4vLyBPcHRpb25hbCBpbmRpY2F0b3IgcGlwc1xuLy9cbi8vIEFkZCBhbiBvcmRlcmVkIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNsYXNzIGFuZCBhZGQgYSBsaXN0IGl0ZW0gZm9yIGVhY2hcbi8vIHNsaWRlIHlvdXIgY2Fyb3VzZWwgaG9sZHMuXG5cbi5jYXJvdXNlbC1pbmRpY2F0b3JzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxNTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmctbGVmdDogMDsgLy8gb3ZlcnJpZGUgPG9sPiBkZWZhdWx0XG4gIC8vIFVzZSB0aGUgLmNhcm91c2VsLWNvbnRyb2wncyB3aWR0aCBhcyBtYXJnaW4gc28gd2UgZG9uJ3Qgb3ZlcmxheSB0aG9zZVxuICBtYXJnaW4tcmlnaHQ6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBtYXJnaW4tbGVmdDogJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgbGkge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLXdpZHRoO1xuICAgIGhlaWdodDogJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAkY2Fyb3VzZWwtaW5kaWNhdG9yLXNwYWNlcjtcbiAgICBtYXJnaW4tbGVmdDogJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI7XG4gICAgdGV4dC1pbmRlbnQ6IC05OTlweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcm91c2VsLWluZGljYXRvci1hY3RpdmUtYmc7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICAvLyBVc2UgdHJhbnNwYXJlbnQgYm9yZGVycyB0byBpbmNyZWFzZSB0aGUgaGl0IGFyZWEgYnkgMTBweCBvbiB0b3AgYW5kIGJvdHRvbS5cbiAgICBib3JkZXItdG9wOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWhpdC1hcmVhLWhlaWdodCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiAkY2Fyb3VzZWwtaW5kaWNhdG9yLWhpdC1hcmVhLWhlaWdodCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBvcGFjaXR5OiAuNTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRjYXJvdXNlbC1pbmRpY2F0b3ItdHJhbnNpdGlvbik7XG4gIH1cblxuICAuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cblxuLy8gT3B0aW9uYWwgY2FwdGlvbnNcbi8vXG4vL1xuXG4uY2Fyb3VzZWwtY2FwdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6ICgxMDAlIC0gJGNhcm91c2VsLWNhcHRpb24td2lkdGgpIC8gMjtcbiAgYm90dG9tOiAyMHB4O1xuICBsZWZ0OiAoMTAwJSAtICRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoKSAvIDI7XG4gIHotaW5kZXg6IDEwO1xuICBwYWRkaW5nLXRvcDogMjBweDtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIGNvbG9yOiAkY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiQG1peGluIGNsZWFyZml4KCkge1xuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxufVxuIiwiLy9cbi8vIFJvdGF0aW5nIGJvcmRlclxuLy9cblxuQGtleWZyYW1lcyBzcGlubmVyLWJvcmRlciB7XG4gIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuXG4uc3Bpbm5lci1ib3JkZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc3Bpbm5lci13aWR0aDtcbiAgaGVpZ2h0OiAkc3Bpbm5lci1oZWlnaHQ7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYm9yZGVyOiAkc3Bpbm5lci1ib3JkZXItd2lkdGggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYW5pbWF0aW9uOiBzcGlubmVyLWJvcmRlciAuNzVzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuLnNwaW5uZXItYm9yZGVyLXNtIHtcbiAgd2lkdGg6ICRzcGlubmVyLXdpZHRoLXNtO1xuICBoZWlnaHQ6ICRzcGlubmVyLWhlaWdodC1zbTtcbiAgYm9yZGVyLXdpZHRoOiAkc3Bpbm5lci1ib3JkZXItd2lkdGgtc207XG59XG5cbi8vXG4vLyBHcm93aW5nIGNpcmNsZVxuLy9cblxuQGtleWZyYW1lcyBzcGlubmVyLWdyb3cge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLnNwaW5uZXItZ3JvdyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRzcGlubmVyLXdpZHRoO1xuICBoZWlnaHQ6ICRzcGlubmVyLWhlaWdodDtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBvcGFjaXR5OiAwO1xuICBhbmltYXRpb246IHNwaW5uZXItZ3JvdyAuNzVzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuLnNwaW5uZXItZ3Jvdy1zbSB7XG4gIHdpZHRoOiAkc3Bpbm5lci13aWR0aC1zbTtcbiAgaGVpZ2h0OiAkc3Bpbm5lci1oZWlnaHQtc207XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLmFsaWduLWJhc2VsaW5lICAgIHsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH0gLy8gQnJvd3NlciBkZWZhdWx0XG4uYWxpZ24tdG9wICAgICAgICAgeyB2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi1taWRkbGUgICAgICB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsgfVxuLmFsaWduLWJvdHRvbSAgICAgIHsgdmVydGljYWwtYWxpZ246IGJvdHRvbSAhaW1wb3J0YW50OyB9XG4uYWxpZ24tdGV4dC1ib3R0b20geyB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsgfVxuLmFsaWduLXRleHQtdG9wICAgIHsgdmVydGljYWwtYWxpZ246IHRleHQtdG9wICFpbXBvcnRhbnQ7IH1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBDb250ZXh0dWFsIGJhY2tncm91bmRzXG5cbkBtaXhpbiBiZy12YXJpYW50KCRwYXJlbnQsICRjb2xvciwgJGlnbm9yZS13YXJuaW5nOiBmYWxzZSkge1xuICAjeyRwYXJlbnR9IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IgIWltcG9ydGFudDtcbiAgfVxuICBhI3skcGFyZW50fSxcbiAgYnV0dG9uI3skcGFyZW50fSB7XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGNvbG9yLCAxMCUpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZShcIlRoZSBgYmctdmFyaWFudGAgbWl4aW5cIiwgXCJ2NC40LjBcIiwgXCJ2NVwiLCAkaWdub3JlLXdhcm5pbmcpO1xufVxuXG5AbWl4aW4gYmctZ3JhZGllbnQtdmFyaWFudCgkcGFyZW50LCAkY29sb3IpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIG1peCgkYm9keS1iZywgJGNvbG9yLCAxNSUpLCAkY29sb3IpIHJlcGVhdC14ICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgQGluY2x1ZGUgYmctdmFyaWFudChcIi5iZy0jeyRjb2xvcn1cIiwgJHZhbHVlLCB0cnVlKTtcbn1cblxuQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgQGluY2x1ZGUgYmctZ3JhZGllbnQtdmFyaWFudChcIi5iZy1ncmFkaWVudC0jeyRjb2xvcn1cIiwgJHZhbHVlKTtcbiAgfVxufVxuXG4uYmctd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmJnLXRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWJsYWNrbGlzdCwgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vXG4vLyBCb3JkZXJcbi8vXG5cbi5ib3JkZXIgICAgICAgICB7IGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItdG9wICAgICB7IGJvcmRlci10b3A6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLXJpZ2h0ICAgeyBib3JkZXItcmlnaHQ6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLWJvdHRvbSAgeyBib3JkZXItYm90dG9tOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuLmJvcmRlci1sZWZ0ICAgIHsgYm9yZGVyLWxlZnQ6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItMCAgICAgICAgeyBib3JkZXI6IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci10b3AtMCAgICB7IGJvcmRlci10b3A6IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1yaWdodC0wICB7IGJvcmRlci1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLWJvdHRvbS0wIHsgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLWxlZnQtMCAgIHsgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmJvcmRlci0jeyRjb2xvcn0ge1xuICAgIGJvcmRlci1jb2xvcjogJHZhbHVlICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmJvcmRlci13aGl0ZSB7XG4gIGJvcmRlci1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi8vXG4vLyBCb3JkZXItcmFkaXVzXG4vL1xuXG4ucm91bmRlZC1zbSB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkIHtcbiAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtdG9wIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXJpZ2h0IHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1ib3R0b20ge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtbGVmdCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWxnIHtcbiAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGcgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtY2lyY2xlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXBpbGwge1xuICBib3JkZXItcmFkaXVzOiAkcm91bmRlZC1waWxsICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLTAge1xuICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy9cbi8vIFV0aWxpdGllcyBmb3IgY29tbW9uIGBkaXNwbGF5YCB2YWx1ZXNcbi8vXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIEBlYWNoICR2YWx1ZSBpbiAkZGlzcGxheXMge1xuICAgICAgLmQjeyRpbmZpeH0tI3skdmFsdWV9IHsgZGlzcGxheTogJHZhbHVlICFpbXBvcnRhbnQ7IH1cbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gVXRpbGl0aWVzIGZvciB0b2dnbGluZyBgZGlzcGxheWAgaW4gcHJpbnRcbi8vXG5cbkBtZWRpYSBwcmludCB7XG4gIEBlYWNoICR2YWx1ZSBpbiAkZGlzcGxheXMge1xuICAgIC5kLXByaW50LSN7JHZhbHVlfSB7IGRpc3BsYXk6ICR2YWx1ZSAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIi8vIENyZWRpdDogTmljb2xhcyBHYWxsYWdoZXIgYW5kIFNVSVQgQ1NTLlxuXG4uZW1iZWQtcmVzcG9uc2l2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxuXG4gIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sXG4gIGlmcmFtZSxcbiAgZW1iZWQsXG4gIG9iamVjdCxcbiAgdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogMDtcbiAgfVxufVxuXG5AZWFjaCAkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8gaW4gJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvcyB7XG4gICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby14OiBudGgoJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvLCAxKTtcbiAgJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvLXk6IG50aCgkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8sIDIpO1xuXG4gIC5lbWJlZC1yZXNwb25zaXZlLSN7JGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvLXh9YnkjeyRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby15fSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKCRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby15IC8gJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvLXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vIEZsZXggdmFyaWF0aW9uXG4vL1xuLy8gQ3VzdG9tIHN0eWxlcyBmb3IgYWRkaXRpb25hbCBmbGV4IGFsaWdubWVudCBvcHRpb25zLlxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAuZmxleCN7JGluZml4fS1yb3cgICAgICAgICAgICB7IGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LWNvbHVtbiAgICAgICAgIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tcm93LXJldmVyc2UgICAgeyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LWNvbHVtbi1yZXZlcnNlIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cblxuICAgIC5mbGV4I3skaW5maXh9LXdyYXAgICAgICAgICB7IGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tbm93cmFwICAgICAgIHsgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LXdyYXAtcmV2ZXJzZSB7IGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1maWxsICAgICAgICAgeyBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tZ3Jvdy0wICAgICAgIHsgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1ncm93LTEgICAgICAgeyBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LXNocmluay0wICAgICB7IGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1zaHJpbmstMSAgICAgeyBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OyB9XG5cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LXN0YXJ0ICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAgIC5qdXN0aWZ5LWNvbnRlbnQjeyRpbmZpeH0tZW5kICAgICB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAgIC5qdXN0aWZ5LWNvbnRlbnQjeyRpbmZpeH0tY2VudGVyICB7IGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWJldHdlZW4geyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuICAgIC5qdXN0aWZ5LWNvbnRlbnQjeyRpbmZpeH0tYXJvdW5kICB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cblxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1zdGFydCAgICB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tZW5kICAgICAgeyBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1jZW50ZXIgICB7IGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1iYXNlbGluZSB7IGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWl0ZW1zI3skaW5maXh9LXN0cmV0Y2ggIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuXG4gICAgLmFsaWduLWNvbnRlbnQjeyRpbmZpeH0tc3RhcnQgICB7IGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWVuZCAgICAgeyBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWNvbnRlbnQjeyRpbmZpeH0tY2VudGVyICB7IGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWNvbnRlbnQjeyRpbmZpeH0tYmV0d2VlbiB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWFyb3VuZCAgeyBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LXN0cmV0Y2ggeyBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cblxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LWF1dG8gICAgIHsgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tc3RhcnQgICAgeyBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tc2VsZiN7JGluZml4fS1lbmQgICAgICB7IGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tc2VsZiN7JGluZml4fS1jZW50ZXIgICB7IGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tYmFzZWxpbmUgeyBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tc3RyZXRjaCAgeyBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5mbG9hdCN7JGluZml4fS1sZWZ0ICB7IGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxvYXQjeyRpbmZpeH0tcmlnaHQgeyBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxuICAgIC5mbG9hdCN7JGluZml4fS1ub25lICB7IGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbkBlYWNoICR2YWx1ZSBpbiAkb3ZlcmZsb3dzIHtcbiAgLm92ZXJmbG93LSN7JHZhbHVlfSB7IG92ZXJmbG93OiAkdmFsdWUgIWltcG9ydGFudDsgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vIENvbW1vbiB2YWx1ZXNcbkBlYWNoICRwb3NpdGlvbiBpbiAkcG9zaXRpb25zIHtcbiAgLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7IHBvc2l0aW9uOiAkcG9zaXRpb24gIWltcG9ydGFudDsgfVxufVxuXG4vLyBTaG9ydGhhbmRcblxuLmZpeGVkLXRvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1maXhlZDtcbn1cblxuLmZpeGVkLWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1maXhlZDtcbn1cblxuLnN0aWNreS10b3Age1xuICBAc3VwcG9ydHMgKHBvc2l0aW9uOiBzdGlja3kpIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogMDtcbiAgICB6LWluZGV4OiAkemluZGV4LXN0aWNreTtcbiAgfVxufVxuIiwiLy9cbi8vIFNjcmVlbnJlYWRlcnNcbi8vXG5cbi5zci1vbmx5IHtcbiAgQGluY2x1ZGUgc3Itb25seSgpO1xufVxuXG4uc3Itb25seS1mb2N1c2FibGUge1xuICBAaW5jbHVkZSBzci1vbmx5LWZvY3VzYWJsZSgpO1xufVxuIiwiLy8gT25seSBkaXNwbGF5IGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnNcbi8vXG4vLyBTZWU6IGh0dHBzOi8vYTExeXByb2plY3QuY29tL3Bvc3RzL2hvdy10by1oaWRlLWNvbnRlbnQvXG4vLyBTZWU6IGh0dHBzOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuXG5AbWl4aW4gc3Itb25seSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4OyAvLyBGaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjU2ODZcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCAuc3Itb25seSB0byBvbmx5IGRpc3BsYXkgY29udGVudCB3aGVuIGl0J3MgZm9jdXNlZC5cbi8vXG4vLyBVc2VmdWwgZm9yIFwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBsaW5rczsgc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDEzL05PVEUtV0NBRzIwLVRFQ0hTLTIwMTMwOTA1L0cxXG4vL1xuLy8gQ3JlZGl0OiBIVE1MNSBCb2lsZXJwbGF0ZVxuXG5AbWl4aW4gc3Itb25seS1mb2N1c2FibGUoKSB7XG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBjbGlwOiBhdXRvO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4uc2hhZG93LXNtIHsgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctc20gIWltcG9ydGFudDsgfVxuLnNoYWRvdyB7IGJveC1zaGFkb3c6ICRib3gtc2hhZG93ICFpbXBvcnRhbnQ7IH1cbi5zaGFkb3ctbGcgeyBib3gtc2hhZG93OiAkYm94LXNoYWRvdy1sZyAhaW1wb3J0YW50OyB9XG4uc2hhZG93LW5vbmUgeyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IH1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBXaWR0aCBhbmQgaGVpZ2h0XG5cbkBlYWNoICRwcm9wLCAkYWJicmV2IGluICh3aWR0aDogdywgaGVpZ2h0OiBoKSB7XG4gIEBlYWNoICRzaXplLCAkbGVuZ3RoIGluICRzaXplcyB7XG4gICAgLiN7JGFiYnJldn0tI3skc2l6ZX0geyAjeyRwcm9wfTogJGxlbmd0aCAhaW1wb3J0YW50OyB9XG4gIH1cbn1cblxuLm13LTEwMCB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4ubWgtMTAwIHsgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi8vIFZpZXdwb3J0IGFkZGl0aW9uYWwgaGVscGVyc1xuXG4ubWluLXZ3LTEwMCB7IG1pbi13aWR0aDogMTAwdncgIWltcG9ydGFudDsgfVxuLm1pbi12aC0xMDAgeyBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50OyB9XG5cbi52dy0xMDAgeyB3aWR0aDogMTAwdncgIWltcG9ydGFudDsgfVxuLnZoLTEwMCB7IGhlaWdodDogMTAwdmggIWltcG9ydGFudDsgfVxuIiwiLy9cbi8vIFN0cmV0Y2hlZCBsaW5rXG4vL1xuXG4uc3RyZXRjaGVkLWxpbmsge1xuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAxO1xuICAgIC8vIEp1c3QgaW4gY2FzZSBgcG9pbnRlci1ldmVudHM6IG5vbmVgIGlzIHNldCBvbiBhIHBhcmVudFxuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgLy8gSUUxMCBidWdmaXgsIHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNjk0Nzk2Ny9pZTEwLWhvdmVyLXBzZXVkby1jbGFzcy1kb2VzbnQtd29yay13aXRob3V0LWJhY2tncm91bmQtY29sb3JcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gTWFyZ2luIGFuZCBQYWRkaW5nXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIEBlYWNoICRwcm9wLCAkYWJicmV2IGluIChtYXJnaW46IG0sIHBhZGRpbmc6IHApIHtcbiAgICAgIEBlYWNoICRzaXplLCAkbGVuZ3RoIGluICRzcGFjZXJzIHtcbiAgICAgICAgLiN7JGFiYnJldn0jeyRpbmZpeH0tI3skc2l6ZX0geyAjeyRwcm9wfTogJGxlbmd0aCAhaW1wb3J0YW50OyB9XG4gICAgICAgIC4jeyRhYmJyZXZ9dCN7JGluZml4fS0jeyRzaXplfSxcbiAgICAgICAgLiN7JGFiYnJldn15I3skaW5maXh9LSN7JHNpemV9IHtcbiAgICAgICAgICAjeyRwcm9wfS10b3A6ICRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAuI3skYWJicmV2fXIjeyRpbmZpeH0tI3skc2l6ZX0sXG4gICAgICAgIC4jeyRhYmJyZXZ9eCN7JGluZml4fS0jeyRzaXplfSB7XG4gICAgICAgICAgI3skcHJvcH0tcmlnaHQ6ICRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAuI3skYWJicmV2fWIjeyRpbmZpeH0tI3skc2l6ZX0sXG4gICAgICAgIC4jeyRhYmJyZXZ9eSN7JGluZml4fS0jeyRzaXplfSB7XG4gICAgICAgICAgI3skcHJvcH0tYm90dG9tOiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1sI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXgjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LWxlZnQ6ICRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbnMgKGUuZy4sIHdoZXJlIGAubWItbjFgIGlzIG5lZ2F0aXZlIHZlcnNpb24gb2YgYC5tYi0xYClcbiAgICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc3BhY2VycyB7XG4gICAgICBAaWYgJHNpemUgIT0gMCB7XG4gICAgICAgIC5tI3skaW5maXh9LW4jeyRzaXplfSB7IG1hcmdpbjogLSRsZW5ndGggIWltcG9ydGFudDsgfVxuICAgICAgICAubXQjeyRpbmZpeH0tbiN7JHNpemV9LFxuICAgICAgICAubXkjeyRpbmZpeH0tbiN7JHNpemV9IHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC5tciN7JGluZml4fS1uI3skc2l6ZX0sXG4gICAgICAgIC5teCN7JGluZml4fS1uI3skc2l6ZX0ge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAubWIjeyRpbmZpeH0tbiN7JHNpemV9LFxuICAgICAgICAubXkjeyRpbmZpeH0tbiN7JHNpemV9IHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC5tbCN7JGluZml4fS1uI3skc2l6ZX0sXG4gICAgICAgIC5teCN7JGluZml4fS1uI3skc2l6ZX0ge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU29tZSBzcGVjaWFsIG1hcmdpbiB1dGlsc1xuICAgIC5tI3skaW5maXh9LWF1dG8geyBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5tdCN7JGluZml4fS1hdXRvLFxuICAgIC5teSN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG4gICAgLm1yI3skaW5maXh9LWF1dG8sXG4gICAgLm14I3skaW5maXh9LWF1dG8ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tYiN7JGluZml4fS1hdXRvLFxuICAgIC5teSN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG4gICAgLm1sI3skaW5maXh9LWF1dG8sXG4gICAgLm14I3skaW5maXh9LWF1dG8ge1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vL1xuLy8gVGV4dFxuLy9cblxuLnRleHQtbW9ub3NwYWNlIHsgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWltcG9ydGFudDsgfVxuXG4vLyBBbGlnbm1lbnRcblxuLnRleHQtanVzdGlmeSAgeyB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXdyYXAgICAgIHsgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50OyB9XG4udGV4dC1ub3dyYXAgICB7IHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfVxuLnRleHQtdHJ1bmNhdGUgeyBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlKCk7IH1cblxuLy8gUmVzcG9uc2l2ZSBhbGlnbm1lbnRcblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLnRleHQjeyRpbmZpeH0tbGVmdCAgIHsgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9XG4gICAgLnRleHQjeyRpbmZpeH0tcmlnaHQgIHsgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsgfVxuICAgIC50ZXh0I3skaW5maXh9LWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtYXRpb25cblxuLnRleHQtbG93ZXJjYXNlICB7IHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsgfVxuLnRleHQtdXBwZXJjYXNlICB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsgfVxuLnRleHQtY2FwaXRhbGl6ZSB7IHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnQ7IH1cblxuLy8gV2VpZ2h0IGFuZCBpdGFsaWNzXG5cbi5mb250LXdlaWdodC1saWdodCAgIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtbGlnaHRlciB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHRlciAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtbm9ybWFsICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsICFpbXBvcnRhbnQ7IH1cbi5mb250LXdlaWdodC1ib2xkICAgIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkICFpbXBvcnRhbnQ7IH1cbi5mb250LXdlaWdodC1ib2xkZXIgIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkZXIgIWltcG9ydGFudDsgfVxuLmZvbnQtaXRhbGljICAgICAgICAgeyBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsgfVxuXG4vLyBDb250ZXh0dWFsIGNvbG9yc1xuXG4udGV4dC13aGl0ZSB7IGNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDsgfVxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgQGluY2x1ZGUgdGV4dC1lbXBoYXNpcy12YXJpYW50KFwiLnRleHQtI3skY29sb3J9XCIsICR2YWx1ZSwgdHJ1ZSk7XG59XG5cbi50ZXh0LWJvZHkgeyBjb2xvcjogJGJvZHktY29sb3IgIWltcG9ydGFudDsgfVxuLnRleHQtbXV0ZWQgeyBjb2xvcjogJHRleHQtbXV0ZWQgIWltcG9ydGFudDsgfVxuXG4udGV4dC1ibGFjay01MCB7IGNvbG9yOiByZ2JhKCRibGFjaywgLjUpICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXdoaXRlLTUwIHsgY29sb3I6IHJnYmEoJHdoaXRlLCAuNSkgIWltcG9ydGFudDsgfVxuXG4vLyBNaXNjXG5cbi50ZXh0LWhpZGUge1xuICBAaW5jbHVkZSB0ZXh0LWhpZGUoJGlnbm9yZS13YXJuaW5nOiB0cnVlKTtcbn1cblxuLnRleHQtZGVjb3JhdGlvbi1ub25lIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtYnJlYWsge1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkICFpbXBvcnRhbnQ7IC8vIElFICYgPCBFZGdlIDE4XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQgIWltcG9ydGFudDtcbn1cblxuLy8gUmVzZXRcblxuLnRleHQtcmVzZXQgeyBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50OyB9XG4iLCIvLyBUZXh0IHRydW5jYXRlXG4vLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nXG5cbkBtaXhpbiB0ZXh0LXRydW5jYXRlKCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBUeXBvZ3JhcGh5XG5cbkBtaXhpbiB0ZXh0LWVtcGhhc2lzLXZhcmlhbnQoJHBhcmVudCwgJGNvbG9yLCAkaWdub3JlLXdhcm5pbmc6IGZhbHNlKSB7XG4gICN7JHBhcmVudH0ge1xuICAgIGNvbG9yOiAkY29sb3IgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGVtcGhhc2l6ZWQtbGluay1ob3Zlci1kYXJrZW4tcGVyY2VudGFnZSAhPSAwIHtcbiAgICBhI3skcGFyZW50fSB7XG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgICAgY29sb3I6IGRhcmtlbigkY29sb3IsICRlbXBoYXNpemVkLWxpbmstaG92ZXItZGFya2VuLXBlcmNlbnRhZ2UpICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZShcImB0ZXh0LWVtcGhhc2lzLXZhcmlhbnQoKWBcIiwgXCJ2NC40LjBcIiwgXCJ2NVwiLCAkaWdub3JlLXdhcm5pbmcpO1xufVxuIiwiLy8gQ1NTIGltYWdlIHJlcGxhY2VtZW50XG5AbWl4aW4gdGV4dC1oaWRlKCRpZ25vcmUtd2FybmluZzogZmFsc2UpIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGZvbnQtZmFtaWx5LW5vLW1pc3NpbmctZ2VuZXJpYy1mYW1pbHkta2V5d29yZFxuICBmb250OiAwLzAgYTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcblxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJgdGV4dC1oaWRlKClgXCIsIFwidjQuMS4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vL1xuLy8gVmlzaWJpbGl0eSB1dGlsaXRpZXNcbi8vXG5cbi52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xufVxuXG4uaW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQsIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4vLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL21haW4uY3NzL2Jsb2IvbWFzdGVyL3NyYy9fcHJpbnQuY3NzXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBzdHlsZXMuXG4vLyBJbmxpbmVkIHRvIGF2b2lkIHRoZSBhZGRpdGlvbmFsIEhUVFAgcmVxdWVzdDpcbi8vIGh0dHBzOi8vd3d3LnBocGllZC5jb20vZGVsYXktbG9hZGluZy15b3VyLXByaW50LWNzcy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpZiAkZW5hYmxlLXByaW50LXN0eWxlcyB7XG4gIEBtZWRpYSBwcmludCB7XG4gICAgKixcbiAgICAqOjpiZWZvcmUsXG4gICAgKjo6YWZ0ZXIge1xuICAgICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IG91dCBgY29sb3JgIGFuZCBgYmFja2dyb3VuZGBcbiAgICAgIC8vY29sb3I6ICRibGFjayAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyXG4gICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgLy9iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgJjpub3QoLmJ0bikge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWM7IGNvbW1lbnQgdGhlIGZvbGxvd2luZyBzZWxlY3RvciBvdXRcbiAgICAvL2FbaHJlZl06OmFmdGVyIHtcbiAgICAvLyAgY29udGVudDogXCIgKFwiIGF0dHIoaHJlZikgXCIpXCI7XG4gICAgLy99XG5cbiAgICBhYmJyW3RpdGxlXTo6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiO1xuICAgIH1cblxuICAgIC8vIEJvb3RzdHJhcCBzcGVjaWZpYzsgY29tbWVudCB0aGUgZm9sbG93aW5nIHNlbGVjdG9yIG91dFxuICAgIC8vXG4gICAgLy8gRG9uJ3Qgc2hvdyBsaW5rcyB0aGF0IGFyZSBmcmFnbWVudCBpZGVudGlmaWVycyxcbiAgICAvLyBvciB1c2UgdGhlIGBqYXZhc2NyaXB0OmAgcHNldWRvIHByb3RvY29sXG4gICAgLy9cblxuICAgIC8vYVtocmVmXj1cIiNcIl06OmFmdGVyLFxuICAgIC8vYVtocmVmXj1cImphdmFzY3JpcHQ6XCJdOjphZnRlciB7XG4gICAgLy8gY29udGVudDogXCJcIjtcbiAgICAvL31cblxuICAgIHByZSB7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgcHJlLFxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRncmF5LTUwMDsgLy8gQm9vdHN0cmFwIGN1c3RvbSBjb2RlOyB1c2luZyBgJGJvcmRlci13aWR0aGAgaW5zdGVhZCBvZiAxcHhcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIFByaW50aW5nIFRhYmxlczpcbiAgICAvLyBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxODA4MTUxNTA5MzQvaHR0cDovL2Nzcy1kaXNjdXNzLmluY3V0aW8uY29tL3dpa2kvUHJpbnRpbmdfVGFibGVzXG4gICAgLy9cblxuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbiAgICB9XG5cbiAgICB0cixcbiAgICBpbWcge1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgb3JwaGFuczogMztcbiAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWMgY2hhbmdlcyBzdGFydFxuXG4gICAgLy8gU3BlY2lmeSBhIHNpemUgYW5kIG1pbi13aWR0aCB0byBtYWtlIHByaW50aW5nIGNsb3NlciBhY3Jvc3MgYnJvd3NlcnMuXG4gICAgLy8gV2UgZG9uJ3Qgc2V0IG1hcmdpbiBoZXJlIGJlY2F1c2UgaXQgYnJlYWtzIGBzaXplYCBpbiBDaHJvbWUuIFdlIGFsc29cbiAgICAvLyBkb24ndCB1c2UgYCFpbXBvcnRhbnRgIG9uIGBzaXplYCBhcyBpdCBicmVha3MgaW4gQ2hyb21lLlxuICAgIEBwYWdlIHtcbiAgICAgIHNpemU6ICRwcmludC1wYWdlLXNpemU7XG4gICAgfVxuICAgIGJvZHkge1xuICAgICAgbWluLXdpZHRoOiAkcHJpbnQtYm9keS1taW4td2lkdGggIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmNvbnRhaW5lciB7XG4gICAgICBtaW4td2lkdGg6ICRwcmludC1ib2R5LW1pbi13aWR0aCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIEJvb3RzdHJhcCBjb21wb25lbnRzXG4gICAgLm5hdmJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuYmFkZ2Uge1xuICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRibGFjaztcbiAgICB9XG5cbiAgICAudGFibGUge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50O1xuXG4gICAgICB0ZCxcbiAgICAgIHRoIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgIHRoLFxuICAgICAgdGQge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0zMDAgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudGFibGUtZGFyayB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcblxuICAgICAgdGgsXG4gICAgICB0ZCxcbiAgICAgIHRoZWFkIHRoLFxuICAgICAgdGJvZHkgKyB0Ym9keSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudGFibGUgLnRoZWFkLWRhcmsgdGgge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICBib3JkZXItY29sb3I6ICR0YWJsZS1ib3JkZXItY29sb3I7XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljIGNoYW5nZXMgZW5kXG4gIH1cbn1cbiIsIi50b2FzdC10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnRvYXN0LW1lc3NhZ2Uge1xuICAtbXMtd29yZC13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG4udG9hc3QtbWVzc2FnZSBhLFxuLnRvYXN0LW1lc3NhZ2UgbGFiZWwge1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cbi50b2FzdC1tZXNzYWdlIGE6aG92ZXIge1xuICBjb2xvcjogI2NjY2NjYztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLnRvYXN0LWNsb3NlLWJ1dHRvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcmlnaHQ6IC0wLjNlbTtcbiAgdG9wOiAtMC4zZW07XG4gIGZsb2F0OiByaWdodDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIC13ZWJraXQtdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZmZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZmZmZjtcbiAgb3BhY2l0eTogMC44O1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7XG59XG4udG9hc3QtY2xvc2UtYnV0dG9uOmhvdmVyLFxuLnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1cyB7XG4gIGNvbG9yOiAjMDAwMDAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogMC40O1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7XG59XG4vKkFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgYnV0dG9uIHZlcnNpb25cbiBpT1MgcmVxdWlyZXMgdGhlIGJ1dHRvbiBlbGVtZW50IGluc3RlYWQgb2YgYW4gYW5jaG9yIHRhZy5cbiBJZiB5b3Ugd2FudCB0aGUgYW5jaG9yIHZlcnNpb24sIGl0IHJlcXVpcmVzIGBocmVmPVwiI1wiYC4qL1xuYnV0dG9uLnRvYXN0LWNsb3NlLWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuLnRvYXN0LXRvcC1jZW50ZXIge1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi50b2FzdC1ib3R0b20tY2VudGVyIHtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4udG9hc3QtdG9wLWZ1bGwtd2lkdGgge1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi50b2FzdC1ib3R0b20tZnVsbC13aWR0aCB7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRvYXN0LXRvcC1sZWZ0IHtcbiAgdG9wOiAxMnB4O1xuICBsZWZ0OiAxMnB4O1xufVxuLnRvYXN0LXRvcC1yaWdodCB7XG4gIHRvcDogMTJweDtcbiAgcmlnaHQ6IDEycHg7XG59XG4udG9hc3QtYm90dG9tLXJpZ2h0IHtcbiAgcmlnaHQ6IDEycHg7XG4gIGJvdHRvbTogMTJweDtcbn1cbi50b2FzdC1ib3R0b20tbGVmdCB7XG4gIGJvdHRvbTogMTJweDtcbiAgbGVmdDogMTJweDtcbn1cbiN0b2FzdC1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTk5OTtcbiAgLypvdmVycmlkZXMqL1xuXG59XG4jdG9hc3QtY29udGFpbmVyICoge1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiN0b2FzdC1jb250YWluZXIgPiBkaXYge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbjogMCAwIDZweDtcbiAgcGFkZGluZzogMTVweCAxNXB4IDE1cHggNTBweDtcbiAgd2lkdGg6IDMwMHB4O1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDNweCAzcHggM3B4IDNweDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHggM3B4IDNweCAzcHg7XG4gIGJvcmRlci1yYWRpdXM6IDNweCAzcHggM3B4IDNweDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTVweCBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIC1tb3otYm94LXNoYWRvdzogMCAwIDEycHggIzk5OTk5OTtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMTJweCAjOTk5OTk5O1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAjOTk5OTk5O1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgb3BhY2l0eTogMC44O1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7XG59XG4jdG9hc3QtY29udGFpbmVyID4gZGl2OmhvdmVyIHtcbiAgLW1vei1ib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMnB4ICMwMDAwMDA7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICMwMDAwMDA7XG4gIG9wYWNpdHk6IDE7XG4gIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4jdG9hc3QtY29udGFpbmVyID4gLnRvYXN0LWluZm8ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9XCIpICFpbXBvcnRhbnQ7XG59XG4jdG9hc3QtY29udGFpbmVyID4gLnRvYXN0LWVycm9yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST1cIikgIWltcG9ydGFudDtcbn1cbiN0b2FzdC1jb250YWluZXIgPiAudG9hc3Qtc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09XCIpICFpbXBvcnRhbnQ7XG59XG4jdG9hc3QtY29udGFpbmVyID4gLnRvYXN0LXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPVwiKSAhaW1wb3J0YW50O1xufVxuI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyID4gZGl2LFxuI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tY2VudGVyID4gZGl2IHtcbiAgd2lkdGg6IDMwMHB4O1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuI3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aCA+IGRpdixcbiN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGggPiBkaXYge1xuICB3aWR0aDogOTYlO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuLnRvYXN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzMDMwMztcbn1cbi50b2FzdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxYTM1MTtcbn1cbi50b2FzdC1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZDM2MmY7XG59XG4udG9hc3QtaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZjk2YjQ7XG59XG4udG9hc3Qtd2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmODk0MDY7XG59XG5cbi50b2FzdC1wcm9ncmVzcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICBoZWlnaHQ6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgb3BhY2l0eTogMC40O1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7XG59XG5cbi8qUmVzcG9uc2l2ZSBEZXNpZ24qL1xuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogMjQwcHgpIHtcbiAgI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gICAgcGFkZGluZzogOHB4IDhweCA4cHggNTBweDtcbiAgICB3aWR0aDogMTFlbTtcbiAgfVxuICAjdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b24ge1xuICAgIHJpZ2h0OiAtMC4yZW07XG4gICAgdG9wOiAtMC4yZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDI0MXB4KSBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gICAgcGFkZGluZzogOHB4IDhweCA4cHggNTBweDtcbiAgICB3aWR0aDogMThlbTtcbiAgfVxuICAjdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b24ge1xuICAgIHJpZ2h0OiAtMC4yZW07XG4gICAgdG9wOiAtMC4yZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDQ4MXB4KSBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gICAgcGFkZGluZzogMTVweCAxNXB4IDE1cHggNTBweDtcbiAgICB3aWR0aDogMjVlbTtcbiAgfVxufVxuIiwiLnNraW4tY3JhdGVyIHtcbiAgICAvLyBUaGVtZSBDb2xvcnMgOlxuICAgICRscy1jb2xvci10aGVtZTogJGxzLWNvbG9yLXByaW1hcnk7XG5cbiAgICAvL0hFQURFUiBTRUNUSU9OXG4gICAgJGhlYWRlci1iZy1jb2xvcjogJHByaW1hcnktdG8tcHJpbWFyeS1saWdodC1ncmFkaWVudDtcbiAgICAkaGVhZGVyLWZvbnQtY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAkaGVhZGVyLWJyYW5kLWZvbnQtY29sb3I6ICR3aGl0ZTtcbiAgICAkaGVhZGVyLWJ1dHRvbnMtYmctY29sb3I6ICR3aGl0ZTtcbiAgICAkaGVhZGVyLWJ1dHRvbnMtYmctY29sb3ItLWhvdmVyOiBkYXJrZW4oJHdoaXRlLCA1JSk7XG4gICAgJGhlYWRlci1idXR0b25zLWZvbnQtY29sb3I6ICRscy1jb2xvci1ibGFjaztcblxuICAgIC8vU0lERUJBUiBTRUNUSU9OXG4gICAgJHNpZGViYXItYmctY29sb3I6ICR3aGl0ZTtcbiAgICAkc2lkZS1iYXItYm9yZGVyLXJpZ2h0OiAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgJHNpZGViYXItZm9udC1jb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICRzaWRlbWVudS1pdGVtLWJnLWNvbG9yLS1ob3ZlcjogZGFya2VuKCRscy1jb2xvci1ncmF5LS1saWdodCwgNSUpO1xuICAgICRzaWRlbWVudS1pdGVtLWJnLWNvbG9yLS1hY3RpdmU6IHRyYW5zcGFyZW50O1xuICAgICRzaWRlbWVudS1pdGVtLWZvbnQtY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAkc2lkZW1lbnUtaXRlbS1mb250LWNvbG9yLS1hY3RpdmU6ICRscy1jb2xvci10aGVtZTtcbiAgICAkc2lkZW1lbnUtaXRlbS1pY29uLWNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAkc2lkZW1lbnUtaXRlbS1pY29uLWNvbG9yLS1hY3RpdmU6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICRzaWRlbWVudS1hcnJvdy1jb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgJHNpZGVtZW51LXN1Ym1lbnUtYmc6ICRscy1jb2xvci1ncmF5LS1saWdodDtcblxuICAgIC8vSG9yaXpvbnRhbCBNZW51XG4gICAgJGhlYWRlci1ib3R0b20tYmc6ICR3aGl0ZTtcbiAgICAkaGVhZGVyLW1lbnUtaXRlbS1mb250LWNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgJGhlYWRlci1tZW51LWl0ZW0tZm9udC1jb2xvci0tYWN0aXZlOiAkbHMtY29sb3ItdGhlbWU7XG4gICAgJGhlYWRlci1tZW51LWl0ZW0tYmctY29sb3ItLWhvdmVyOiBkYXJrZW4oJGxzLWNvbG9yLWdyYXktLWxpZ2h0LCA1JSk7XG4gICAgJGhlYWRlci1tZW51LWl0ZW0tYmctY29sb3ItLWFjdGl2ZTogdHJhbnNwYXJlbnQ7XG5cbiAgICAvL0RST1BET1dOXG4gICAgJGRyb3Bkb3duLWJnOiAkd2hpdGU7XG4gICAgJGRyb3Bkb3duLWJnLS1ob3ZlcjogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICRkcm9wZG93bi1ib3JkZXItY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICRkcm9wZG93bi1kaXZpZGVyLWJnOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAkZHJvcGRvd24tYWN0aXZhdG9yLWNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgJGRyb3Bkb3duLWFjdGl2YXRvci1jb2xvci0taG92ZXI6ICRscy1jb2xvci10aGVtZTtcbiAgICAkZHJvcGRvd24taGVhZGVyLWNvbG9yOiAkbHMtY29sb3ItdGhlbWU7XG4gICAgJGRyb3Bkb3duLWhlYWRlci1ib3JkZXItY29sb3I6ICRscy1jb2xvci1ncmF5LS1saWdodDtcblxuICAgIC8vTUlTQ1xuICAgICRjb2RlLWJnOiAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgJGNvZGUtY29sb3I6ICRscy1jb2xvci10aGVtZTtcblxuICAgIC8vTUFJTEJPWFxuICAgICRtYWlsYm94LXNpZGViYXItbWVudS1pdGVtOiAkbHMtY29sb3ItdGhlbWU7XG4gICAgJG1haWxib3gtZm9udC1jb2xvcjokbHMtY29sb3ItYmxhY2s7XG4gICAgJG1haWxib3gtcGFnZS1saW5rOiAkd2hpdGU7XG4gICAgJG1haWxib3gtcGFnZS1saW5rLWJnOiAkbHMtY29sb3ItdGhlbWU7XG5cbiAgICAubWFpbi1jb250ZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQ7XG4gICAgfVxuXG4gICAgLm5vLWRhdGEtaW5mbyB7XG5cbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE3LjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLXZlcnktZGFyaztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy9IRUFERVJcbiAgICAuc2l0ZS1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkaGVhZGVyLWJnLWNvbG9yICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDIzMCwgMjMwLCAyMzAsIDAuNyk7XG5cbiAgICAgICAgLmJyYW5kLW1haW4ge1xuICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItYnJhbmQtZm9udC1jb2xvcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBwb3BwaW5zLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LXRvZ2dsZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWJ1dHRvbnMtYmctY29sb3I7XG4gICAgICAgICAgICBjb2xvcjogJGhlYWRlci1idXR0b25zLWZvbnQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAuaGFtYnVyZ2VyIHNwYW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGhlYWRlci1idXR0b25zLWZvbnQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAuaGFtYnVyZ2VyLWlubmVyLFxuICAgICAgICAuaGFtYnVyZ2VyLWlubmVyOjpiZWZvcmUsXG4gICAgICAgIC5oYW1idXJnZXItaW5uZXI6OmFmdGVyICB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWZvbnQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAuaGFtYnVyZ2VyIHNwYW46OmJlZm9yZSxcbiAgICAgICAgLmhhbWJ1cmdlciBzcGFuOjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWJ1dHRvbnMtZm9udC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb24tbGlzdCBsaSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWJ1dHRvbnMtYmctY29sb3I7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItYnV0dG9ucy1mb250LWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWJ1dHRvbnMtYmctY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkaGVhZGVyLWJ1dHRvbnMtZm9udC1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RpZmljYXRpb24tZHJvcGRvd24gLmRyb3Bkb3duLWhlYWRlciB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGRyb3Bkb3duLWhlYWRlci1ib3JkZXItY29sb3I7XG4gICAgICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWhlYWRlci1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1kaXZpZGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1kaXZpZGVyLWJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9IRURFUiBCT1RUT01cbiAgICAuaGVhZGVyLW5hdiB7XG5cbiAgICAgICAgLmRyb3Bkb3duLWdyb3VwLmRyb3Bkb3duLWdyb3VwLmFjdGl2ZSA+IC5kcm9wZG93bi1hY3RpdmF0b3IgPiBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkZHJvcGRvd24taGVhZGVyLWNvbG9yO1xuICAgICAgICB9XG4gICAgICAgIC5kcm9wZG93bi1ncm91cC5oYXMtY2hpbGQudG9nZ2xlLWFycm93LmFjdGl2ZSA+IC5kcm9wZG93bi1hY3RpdmF0b3I6OmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGRyb3Bkb3duLWhlYWRlci1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vU0lERUJBUi9OQVZcblxuICAgIC5zaWRlYmFyLWxlZnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZWJhci1iZy1jb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHNpZGUtYmFyLWJvcmRlci1yaWdodDtcbiAgICB9XG5cbiAgICAuc2lkZS1uYXYge1xuICAgICAgICBtYXJnaW46IDIwcHggMCAwIDA7XG5cbiAgICAgICAgLnNpZGUtbmF2LWRpdmlzaW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sbGFwc2UtZ3JvdXAgLmNvbGxhcHNlLWdyb3VwLWl0ZW0ge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogcG9wcGlucywgc2Fucy1zZXJpZjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGVtZW51LWl0ZW0tYmctY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5hY3RpdmUgPiAuY29sbGFwc2UtaXRlbS10aXRsZSA+IGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZW1lbnUtaXRlbS1mb250LWNvbG9yLS1hY3RpdmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2xsYXBzZS1pdGVtLXRpdGxlIGkge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZW1lbnUtaXRlbS1pY29uLWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmFjdGl2ZSBpIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHNpZGVtZW51LWl0ZW0taWNvbi1jb2xvci0tYWN0aXZlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2xsYXBzZS1ncm91cC1pdGVtcyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGVtZW51LXN1Ym1lbnUtYmc7XG5cbiAgICAgICAgICAgICAgICAuY29sbGFwc2UtZ3JvdXAtaXRlbXMge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHNpZGVtZW51LXN1Ym1lbnUtYmcsIDUlKTtcblxuICAgICAgICAgICAgICAgICAgICAuY29sbGFwc2UtZ3JvdXAtaXRlbXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRzaWRlbWVudS1zdWJtZW51LWJnLCA4JSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkc2lkZW1lbnUtaXRlbS1mb250LWNvbG9yLS1hY3RpdmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9Ib3Jpem9udGFsIExheW91dFxuICAgIC5oZWFkZXItYm90dG9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1ib3R0b20tYmc7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheTtcbiAgICB9XG5cbiAgICAuaGVhZGVyLW5hdiB7XG4gICAgICAgIGxpIGEge1xuICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItbWVudS1pdGVtLWZvbnQtY29sb3I7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItbWVudS1pdGVtLWJnLWNvbG9yLS1ob3ZlcjtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGhlYWRlci1tZW51LWl0ZW0tZm9udC1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpLmFjdGl2ZSA+IGEge1xuICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItbWVudS1pdGVtLWZvbnQtY29sb3ItLWFjdGl2ZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItbWVudS1pdGVtLWJnLWNvbG9yLS1hY3RpdmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkaGVhZGVyLW1lbnUtaXRlbS1mb250LWNvbG9yLS1hY3RpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1tZW51LWl0ZW0tYmctY29sb3ItLWFjdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpIC5kcm9wZG93bi1pdGVtLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogJGhlYWRlci1tZW51LWl0ZW0tZm9udC1jb2xvci0tYWN0aXZlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1tZW51LWl0ZW0tYmctY29sb3ItLWFjdGl2ZTtcblxuICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkaGVhZGVyLW1lbnUtaXRlbS1mb250LWNvbG9yLS1hY3RpdmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1tZW51LWl0ZW0tYmctY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9UYWJzXG5cbiAgICAvLyBUYWJzIERlZmF1bHRcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC50YWJzLWNvbXBvbmVudC50YWJzLWRlZmF1bHQge1xuICAgICAgICAudGFicy1jb21wb25lbnQtdGFiIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItdGhlbWU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXRoZW1lO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAudGFicy1jb21wb25lbnQtdGFiOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci10aGVtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJzLWNvbXBvbmVudC1wYW5lbHMge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRscy1jb2xvci10aGVtZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFicyBWZXJ0aWNhbFxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLnRhYnMtY29tcG9uZW50LnRhYnMtdmVydGljYWwge1xuICAgICAgICAudGFicy1jb21wb25lbnQtdGFicyB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbHMtY29sb3ItdGhlbWUgIWltcG9ydGFudDtcblxuICAgICAgICAgICAgLnRhYnMtY29tcG9uZW50LXRhYiB7XG4gICAgICAgICAgICAgICAgYSwgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItdGhlbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAudGFicy1jb21wb25lbnQtdGFiOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItdGhlbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJzIFNpbXBsZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLnRhYnMtY29tcG9uZW50LnRhYnMtc2ltcGxlIHtcbiAgICAgICAgLnRhYnMtY29tcG9uZW50LXRhYnMgLnRhYnMtY29tcG9uZW50LXRhYiB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkbHMtY29sb3ItdGhlbWU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5pcy1hY3RpdmUgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJzLWNvbXBvbmVudC1wYW5lbHMge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFicyBTaW1wbGUgVmVydGljYWxcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC50YWJzLWNvbXBvbmVudC50YWJzLXNpbXBsZS12ZXJ0aWNhbCAudGFicy1jb21wb25lbnQtdGFicyB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7XG5cbiAgICAgICAgLnRhYnMtY29tcG9uZW50LXRhYiB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgbGlnaHRlbigkbHMtY29sb3ItdGhlbWUsIDMwJSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDNweCBzb2xpZCAkbHMtY29sb3ItdGhlbWU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci10aGVtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vTUlTQ1xuICAgIGNvZGUsIC5jb2RlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmc7XG4gICAgICAgIGNvbG9yOiAkY29kZS1jb2xvcjtcbiAgICB9XG5cbiAgICBtYXJrLCAubWFyayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci10aGVtZTtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICAudG9kby1jb250YWluZXIge1xuICAgICAgICBoNSB7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItdGhlbWUgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIERyb3B6b25lXG5cbiAgICAudnVlLWRyb3B6b25lIC5kei1wcmV2aWV3IHtcbiAgICAgICAgLmR6LWRldGFpbHMge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxzLWNvbG9yLXRoZW1lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZHotdXBsb2FkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmR6LWVycm9yLW1hcmsgc3ZnICNQYWdlLTEgZyB7XG4gICAgICAgICAgICBmaWxsOiAkd2hpdGUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kei1zdWNjZXNzLW1hcmsgc3ZnIGcgcGF0aCB7XG4gICAgICAgICAgICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmR6LXJlbW92ZSB7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDJweCAkd2hpdGUgc29saWQgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vRHJvcGRvd25cbiAgIC5kcm9wZG93bi1ncm91cCB7XG5cbiAgICAgICAgJi5hY3RpdmUgPiAuZHJvcGRvd24tYWN0aXZhdG9yID4gYSB7XG4gICAgICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWFjdGl2YXRvci1jb2xvci0taG92ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tYWN0aXZhdG9yIGEge1xuICAgICAgICAgICAgY29sb3I6ICRkcm9wZG93bi1hY3RpdmF0b3ItY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tYWN0aXZhdG9yIGE6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWJnLS1ob3ZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuaGFzLWNoaWxkLnRvZ2dsZS1hcnJvdy5hY3RpdmUgPiAuZHJvcGRvd24tYWN0aXZhdG9yOjphZnRlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRkcm9wZG93bi1hY3RpdmF0b3ItY29sb3ItLWhvdmVyIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3Bkb3duLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWFjdGl2YXRvci1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iZztcblxuICAgICAgICAgICAgLmRyb3Bkb3duLWdyb3VwLWl0ZW0gLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZHJvcGRvd24tYWN0aXZhdG9yLWNvbG9yO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmRyb3Bkb3duLWdyb3VwLWl0ZW0gLmRyb3Bkb3duLWl0ZW0uYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWFjdGl2YXRvci1jb2xvci0taG92ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5kcm9wZG93bi1ncm91cC1pdGVtIC5kcm9wZG93bi1pdGVtOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmctLWhvdmVyO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5kcm9wZG93bi1hY3RpdmF0b3I6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkZHJvcGRvd24tYWN0aXZhdG9yLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3Bkb3duLWNvbnRhaW5lciAuZHJvcGRvd24tZ3JvdXAuYWN0aXZlIC5kcm9wZG93bi1hY3RpdmF0b3Ige1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWFjdGl2YXRvci1jb2xvci0taG92ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkZHJvcGRvd24tYWN0aXZhdG9yLWNvbG9yLS1ob3ZlciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1pdGVtLWRpdmlkZXIge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRkcm9wZG93bi1kaXZpZGVyLWJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9CdXR0b25zXG4gICAgLmJ0bi10aGVtZSB7XG4gICAgICAgIC8vIEBpbmNsdWRlIGJ1dHRvbi12YXJpYW50KCRscy1jb2xvci10aGVtZSwgJGxzLWNvbG9yLXRoZW1lKTtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXRoZW1lO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgYmFja2dyb3VuZDogbGlnaHRlbigkbHMtY29sb3ItdGhlbWUsIDQlKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLmJ0bi10aGVtZS1vdXRsaW5lIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLW91dGxpbmUtdmFyaWFudCgkbHMtY29sb3ItdGhlbWUpO1xuICAgIH1cblxuICAgIC8vRm9ybXNcbiAgICAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLXRoZW1lO1xuICAgIH1cblxuICAgIC8vVnVlIFNlbGVjdFxuICAgIC5tdWx0aXNlbGVjdCB7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG5cbiAgICAgICAgLm11bHRpc2VsZWN0X19vcHRpb24tLWhpZ2hsaWdodCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG5cbiAgICAgICAgICAgICYubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm11bHRpc2VsZWN0X190YWdzLXdyYXAge1xuICAgICAgICAgICAgLm11bHRpc2VsZWN0X190YWcge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci10aGVtZTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuXG4gICAgICAgICAgICAgICAgLm11bHRpc2VsZWN0X190YWctaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXRoZW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vREFURVBJQ0tFUlxuICAgIC52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwge1xuXG4gICAgICAgICY6bm90KC5ibGFuayk6bm90KC5kaXNhYmxlZCkge1xuXG4gICAgICAgICAgICAmLmRheTpob3ZlcixcbiAgICAgICAgICAgICYubW9udGg6aG92ZXIsXG4gICAgICAgICAgICAmLnllYXI6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci10aGVtZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItdGhlbWUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiR3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuaGlnaGxpZ2h0ZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDpsaWdodGVuKCRscy1jb2xvci10aGVtZSwyNSUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjokd2hpdGU7XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZ1ZS1DYXJvdXNlbFxuICAgIC5WdWVDYXJvdXNlbC1kb3Qge1xuXG4gICAgICAgIC5WdWVDYXJvdXNlbC1kb3QtYnV0dG9uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1kYXJrIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuVnVlQ2Fyb3VzZWwtZG90LS1hY3RpdmUge1xuICAgICAgICAgICAgLlZ1ZUNhcm91c2VsLWRvdC1idXR0b24ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci10aGVtZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvL01BSUxCT1hcbiAgICAubWFpbGJveCAubWFpbGJveC1jb250ZW50IHtcblxuICAgICAgICAudGFibGUgdHIgdGQgLmNvbnRlbnQtc3ViamVjdCB7XG4gICAgICAgICAgICBjb2xvcjogJG1haWxib3gtZm9udC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tYWlsYm94LWNvbnRlbnQtZm9vdGVyIHtcblxuICAgICAgICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRtYWlsYm94LWZvbnQtY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hY3RpdmUgLnBhZ2UtbGluayB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1haWxib3gtcGFnZS1saW5rLWJnO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJG1haWxib3gtcGFnZS1saW5rLWJnO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbWFpbGJveC1wYWdlLWxpbms7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLWZhdm9yaXRlIC5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci10aGVtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYWlsYm94LW1vZGFsIC5tYWlsLWJvZHkgLm1lc3NhZ2UtaGVhZGluZy5lbWFpbCBhIHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAubWFpbGJveCAubWFpbGJveC1zaWRlYmFyIHtcblxuICAgICAgICAuc2lkZWJhci1tZW51IGxpLmFjdGl2ZSB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkICRscy1jb2xvci10aGVtZTtcbiAgICAgICAgfVxuICAgICAgICAuc2lkZWJhci1tZW51IGxpIGF7XG4gICAgICAgICAgICBjb2xvcjogJG1haWxib3gtZm9udC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sZWZ0LXNpZGViYXItYnRuIHtcbiAgICAgICAgICAgIGNvbG9yOiAkbWFpbGJveC1mb250LWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgLmhlYWRlci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZW1lbnUtc3VibWVudS1iZyAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gQmFzaWMgU3R5bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmh0bWwsIGJvZHkgLCAuc2l0ZS13cmFwcGVye1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbmJvZHkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICBmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7XG4gICAgY29sb3I6ICRiYXNlLWZvbnQtY29sb3I7XG5cbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG5cbiAgICBpIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJyFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICBjb2xvcjogJGhlYWRpbmctZm9udC1jb2xvcjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuYSB7XG4gICAgY29sb3I6ICRscy1jb2xvci1ibGFjay0tbGlnaHQ7XG5cbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6IGxpZ2h0ZW4oJGxzLWNvbG9yLWJsYWNrLS1saWdodCwgMTAlKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cblxufVxuXG5tYXJrLCAubWFyayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICBwYWRkaW5nOiAwLjJlbSAwLjRlbTtcbiAgICBtYXJnaW46IDAgMXB4O1xufVxuXG5jb2RlLCAuY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmc7XG4gICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xufVxuXG46YWN0aXZlLCA6Zm9jdXMsIDpob3ZlciB7XG4gICAgb3V0bGluZTogMDtcbn1cblxuW3YtY2xvYWtdIHtkaXNwbGF5OiBub25lfVxuXG4udGV4dC1kZWZhdWx0IHtcbiAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrICFpbXBvcnRhbnQ7XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lciB7XG4gICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbi5mYS1zcGlubmVyIHtcbiAgICBhbmltYXRpb246IHNwaW5uZXIgMS41cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5maWx0ZXItc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG4uY2xlYXItZmlsdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMHB4O1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmxpc3QtYWRkLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxM3B4IDEwcHg7XG4gICAgYmFja2dyb3VuZDokbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5pY29uIHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5LS1saWdodDtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBQb3BwaW5zO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgMTBweCAhaW1wb3J0YW50O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5LS1saWdodDtcbiAgICB9XG59XG5cbi5idG4tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5zd2FsLWljb24tLWN1c3RvbSB7XG4gICAgaGVpZ2h0OiA3MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJvcmRlci1jb2xvcjogJGxzLWNvbG9yLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeSAhaW1wb3J0YW50O1xufVxuXG4uYXZhdGFyLWNyb3BwZXItYnRuOmhvdmVyICB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxzLWNvbG9yLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogJHdoaXRlO1xufVxuIiwiLnNpdGUtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgbGVmdDogMDtcbiAgICBwYWRkaW5nOiAxMnB4IDMwcHg7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xufVxuXG4uc2lkZWJhci1sZWZ0IHtcbiAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHBhZGRpbmc6IDYwcHggMCAxMHB4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDI0MHB4O1xuICAgIHotaW5kZXg6IDMwO1xufVxuXG4uc2lkZWJhci1ib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyOnZlcnRpY2FsIHtcbiAgICAgICAgd2lkdGg6IDhweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhcjpob3Jpem9udGFsIHtcbiAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIH1cbn1cblxuLm1vYmlsZS1tZW51LW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMjk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg0OCwgNzUsIDg4LCAuNSk7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmxheW91dC1kZWZhdWx0IC5tYWluLWNvbnRlbnQsXG4ubGF5b3V0LWljb24tc2lkZWJhciAubWFpbi1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA5MHB4IDMwcHggMTBweCAyNzBweDtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAzOXB4KTtcbn1cblxuLnNpdGUtZm9vdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgY29sb3I6ICM4MThhOTE7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgcGFkZGluZzogMTBweCAzMHB4IDEwcHggMjU1cHg7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjay0tbGlnaHQ7XG4gICAgfVxufVxuXG4ucGFnZS1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB9XG5cbiAgICBzZWxlY3Qge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLmJyZWFkY3J1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5wYWdlLWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgfVxufVxuXG4udGVtcGxhdGUtY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8vTGF5b3V0IEhvcml6b250YWxcblxuQG1lZGlhKG1heC13aWR0aDogJHNtYWxsLWJyZWFrcG9pbnQtYmVsb3cpIHtcblxuICAgIC5zaXRlLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTVweDtcbiAgICB9XG5cbiAgICAuc2lkZWJhci1sZWZ0IHtcbiAgICAgICAgbGVmdDogLTI0MHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IC4zcyBlYXNlO1xuICAgIH1cblxuICAgIC5zaWRlYmFyLW9wZW4gLnNpZGViYXItbGVmdCB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLnNpZGViYXItb3BlbiAubW9iaWxlLW1lbnUtb3ZlcmxheSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5sYXlvdXQtZGVmYXVsdCAubWFpbi1jb250ZW50LFxuICAgIC5sYXlvdXQtaWNvbi1zaWRlYmFyIC5tYWluLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgfVxuXG4gICAgLnNpdGUtZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIH1cblxufVxuXG5cbiIsIi5zaWRlYmFyLWxlZnQge1xuXG4gICAgLm1lbnUtZ3JvdXAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjlweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tZW51LWl0ZW0ge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMHB4IDExcHggMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAubWVudS10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBQb3BwaW5zO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW51LWljb24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI1cHg7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDNweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbnUtdGV4dCB7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW51LWljb24ge1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLmJyYW5kLW1haW4gIGltZyB7XG4gICAgaGVpZ2h0OiAyNXB4O1xufVxuXG4ubmF2LXRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1idXR0b25zLWJnLWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBjb2xvcjogJGhlYWRlci1idXR0b25zLWZvbnQtY29sb3I7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDlweDtcbiAgICBwYWRkaW5nOiA2cHg7XG5cbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzLFxuICAgICY6dmlzaXRlZCB7XG4gICAgICAgIGNvbG9yOiAkaGVhZGVyLWZvbnQtY29sb3I7XG4gICAgfVxufVxuXG4uYWN0aW9uLWxpc3Qge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcblxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwIDRweDtcblxuICAgICAgICAmLmFjdGlvbi1pdGVtIGEge1xuICAgICAgICAgICAgcGFkZGluZzogMTFweDtcbiAgICAgICAgfVxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICBjb2xvcjogJHNpZGViYXItaWNvbi1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1idXR0b25zLWJnLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItYnV0dG9ucy1mb250LWNvbG9yO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTRweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcGFkZGluZzogMTFweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWJ1dHRvbnMtYmctY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgY29sb3I6ICRoZWFkZXItZm9udC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLmF2YXRhciB7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWdyb3VwIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1idXR0b25zLWJnLWNvbG9yO1xuXG4gICAgICAgIGkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAmLmhhcy1jaGlsZCA+IC5kcm9wZG93bi1hY3RpdmF0b3I6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmRyb3Bkb3duLWdyb3VwLWl0ZW0gaSB7XG4gICAgICAgICAgICB3aWR0aDogMjVweDtcbiAgICAgICAgfVxuXG4gICAgfVxuICAgICAubm90aWZpY2F0aW9uLWRyb3Bkb3duIHtcbiAgICAgICAgcGFkZGluZzogNXB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgLmRyb3Bkb3duLWhlYWRlciB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICBwYWRkaW5nOiAzcHggMTBweCA4cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkc21hbGwtYnJlYWtwb2ludC1iZWxvdykge1xuXG4gICAgLm5hdi10b2dnbGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cblxuICAgIC5icmFuZC1tYWluIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5zaWRlLW5hdiB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgIC5jb2xsYXBzZS1ncm91cCAuY29sbGFwc2UtZ3JvdXAtaXRlbSB7XG5cbiAgICAgICAgLmNvbGxhcHNlLWl0ZW0tdGl0bGUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAgICYgPiBhID4gLmljb24tZmEuYXJyb3cge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40Mjg1NztcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxMDRcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJHNpZGViYXItZm9udC1jb2xvcjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMTJweCAxMnB4IDEycHggMzBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGVtZW51LWl0ZW0tYmctY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgY29sb3I6ICRzaWRlYmFyLWljb24tY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG5cbiAgICAgICAgICAgICYgPiAuY29sbGFwc2UtaXRlbS10aXRsZSB7XG5cbiAgICAgICAgICAgICAgICAmID4gYSAuaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcblxuICAgICAgICAgICAgICAgICAgICAmID4gLmljb24tZmEuYXJyb3c6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMTA3XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmNvbGxhcHNlLWdyb3VwLWl0ZW1zIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzaWRlbWVudS1zdWJtZW51LWJnO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIC5jb2xsYXBzZS1ncm91cC1pdGVtcyB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJHNpZGVtZW51LXN1Ym1lbnUtYmcsIDUlKTtcblxuICAgICAgICAgICAgICAgIC5jb2xsYXBzZS1ncm91cC1pdGVtcyB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJHNpZGVtZW51LXN1Ym1lbnUtYmcsIDglKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGEuYWN0aXZle1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5iYXNlLWRhdGUtaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5kYXRlLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogMHB4IDZweCAwcHggNDBweDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjODE3QUUzO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5pbnZhbGlkIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGQjcxNzggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4udmRwLWRhdGVwaWNrZXJfX2NhbGVuZGFyLWJ1dHRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxM3B4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDIwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAuaWNvbi1mYSB7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICB9XG59XG4iLCIuYmFzZS1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmxlZnQtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDIwcHg7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSk7XG4gICAgfVxuXG4gICAgLnJpZ2h0LWlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxM3B4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIG1pbi13aWR0aDogMThweDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5O1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICByaWdodDogMHB4O1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB9XG5cbiAgICAucmlnaHQtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWluLXdpZHRoOiAxOHB4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIH1cblxuICAgIC5zbWFsbC1pbnB1dCB7XG4gICAgICAgIG1heC13aWR0aDogMTAwcHg7XG4gICAgfVxuXG4gICAgLmlucHV0LWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgcGFkZGluZzogOHB4IDEzcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG5cbiAgICAgICAgJi52LW1vbmV5IHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzgxN0FFMztcbiAgICAgICAgfVxuXG4gICAgICAgICYuaW52YWxpZCB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjRkI3MTc4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLWxlZnQtaWNvbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDM1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLXJpZ2h0LWljb24ge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMzVweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5iYXNlLWJ1dHRvbiB7XG5cbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcGFkZGluZzogNnB4IDIwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuXG4gICAgJi5idG4tbGcge1xuICAgICAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyXG4gICAgfVxuXG4gICAgJi5idG4tc20ge1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlclxuICAgIH1cblxuICAgICYuYnRuLWRhbmdlciB7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIge1xuICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5pY29uLWJ1dHRvbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuaWNvbi1sZWZ0IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmljb24tcmlnaHQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICYuYnRuLWN1cnNvci1ub3QtYWxsb3dlZCB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIH1cbn1cbiIsIi5zZWFyY2gtc2VsZWN0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAuYWN0aXZhdG9yIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC5zZWxlY3Rvci1tZW51IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctbGc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG5cbiAgICAuc2VsZWN0b3ItbWVudS1hYm92ZSB7XG4gICAgICAgIHRvcDogdW5zZXQgIWltcG9ydGFudDtcbiAgICAgICAgYm90dG9tOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLmJhc2UtdGV4dC1hcmVhIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYudGV4dC1hcmVhLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDhweCAxM3B4O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuXG4gICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBQb3BwaW5zO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjODE3QUUzO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5pbnZhbGlkIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGQjcxNzggIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcmsgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtaWNvbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDM1cHg7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLmJhc2Utc3dpdGNoIHtcblxuICAgIGlucHV0W3R5cGU9Y2hlY2tib3hdIHtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cblxuICAgIGxhYmVsIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWluZGVudDogLTk5OTlweDtcbiAgICAgICAgd2lkdGg6IDM1cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICBsYWJlbDphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtM3B4O1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIH1cblxuICAgIGlucHV0OmNoZWNrZWQrbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItcHJpbWFyeS0tdmVyeS1saWdodDtcbiAgICB9XG5cbiAgICBpbnB1dDpjaGVja2VkK2xhYmVsOmFmdGVyIHtcbiAgICAgICAgbGVmdDogY2FsYygxMDAlIC0gMHB4KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgfVxuXG4gICAgbGFiZWw6YWN0aXZlOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgfVxufVxuIiwiQGltcG9ydCAnLi9hbmltYXRpb24vdmFyaWFibGVzJztcbkBpbXBvcnQgJy4vYW5pbWF0aW9uL21peGlucyc7XG5AaW1wb3J0ICcuL2FuaW1hdGlvbi9mdW5jdGlvbnMnO1xuXG4kc2l6ZTogNTBweDtcblxuQGtleWZyYW1lcyBiYWxsLXNjYWxlLXJpcHBsZS1tdWx0aXBsZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDAuMDtcbiAgfVxufVxuXG5AbWl4aW4gYmFsbC1zY2FsZS1yaXBwbGUtbXVsdGlwbGUgKCRuOjMsICRzdGFydDowKSB7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkbiB7XG4gICAgPiBkaXY6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IGRlbGF5KDAuMnMsICRuLCAkaSAtIDEpO1xuICAgIH1cbiAgfVxufVxuXG4ubG9hZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogNTAwcHg7XG59XG5cbi5iYWxsLXNjYWxlLXJpcHBsZS1tdWx0aXBsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1cHgpO1xuICAgIHRvcDogNjAlO1xuICAgIGxlZnQ6IDQwJTtcbiAgICBAaW5jbHVkZSBiYWxsLXNjYWxlLXJpcHBsZS1tdWx0aXBsZSgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUgLyAyKTtcblxuICAgID4gZGl2IHtcbiAgICAgICAgQGluY2x1ZGUgZ2xvYmFsLWFuaW1hdGlvbigpO1xuXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMnB4O1xuICAgICAgICBsZWZ0OiAtMjZweDtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgYW5pbWF0aW9uOiBiYWxsLXNjYWxlLXJpcHBsZS1tdWx0aXBsZSAxLjI1cyAwcyBpbmZpbml0ZSBjdWJpYy1iZXppZXIoLjIxLC41MywuNTYsLjgpO1xuICAgIH1cbn1cbiIsIkBtaXhpbiBnbG9iYWwtYmcoKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xufVxuXG5AbWl4aW4gZ2xvYmFsLWFuaW1hdGlvbigpIHtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbn1cblxuQG1peGluIGJhbGxzKCkge1xuICBAaW5jbHVkZSBnbG9iYWwtYmcoKTtcblxuICB3aWR0aDogJGJhbGwtc2l6ZTtcbiAgaGVpZ2h0OiAkYmFsbC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBtYXJnaW46ICRtYXJnaW47XG59XG5cbkBtaXhpbiBsaW5lcygpIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJnKCk7XG5cbiAgd2lkdGg6ICRsaW5lLXdpZHRoO1xuICBoZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBtYXJnaW46ICRtYXJnaW47XG59XG4iLCIuYmFzZS1wcmVmaXgtaW5wdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNDBweDtcbiAgICBwYWRkaW5nOiAycHggMnB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG4gICAgLmljb24ge1xuICAgICAgICB3aWR0aDogMTNweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTdweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIDA7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgMDtcbiAgICB9XG5cbiAgICAucHJlZml4LWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBjb2xvcjogIzU1NTQ3QTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgcGFkZGluZzogOXB4IDJweCA5cHggMTBweDtcbiAgICB9XG5cbiAgICAucHJlZml4LWlucHV0LWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDhweCAxM3B4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgfVxufVxuXG4iLCIudG9vbHRpcCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAxMDAwMDtcblxuICAgIC50b29sdGlwLWlubmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDRweDtcbiAgICB9XG5cbiAgICAudG9vbHRpcC1hcnJvdyB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIGhlaWdodDogMDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBtYXJnaW46IDVweDtcbiAgICAgIGJvcmRlci1jb2xvcjogYmxhY2s7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgICZbeC1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcblxuICAgICAgLnRvb2x0aXAtYXJyb3cge1xuICAgICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggMCA1cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvdHRvbTogLTVweDtcbiAgICAgICAgbGVmdDogY2FsYyg1MCUgLSA1cHgpO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICZbeC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICAgIG1hcmdpbi10b3A6IDVweDtcblxuICAgICAgLnRvb2x0aXAtYXJyb3cge1xuICAgICAgICBib3JkZXItd2lkdGg6IDAgNXB4IDVweCA1cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIHRvcDogLTVweDtcbiAgICAgICAgbGVmdDogY2FsYyg1MCUgLSA1cHgpO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICZbeC1wbGFjZW1lbnRePVwicmlnaHRcIl0ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcblxuICAgICAgLnRvb2x0aXAtYXJyb3cge1xuICAgICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBsZWZ0OiAtNXB4O1xuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gNXB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG5cbiAgICAgIC50b29sdGlwLWFycm93IHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiA1cHggMCA1cHggNXB4O1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIHJpZ2h0OiAtNXB4O1xuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gNXB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnBvcG92ZXIge1xuICAgICAgJGNvbG9yOiAjZjlmOWY5O1xuXG4gICAgICAucG9wb3Zlci1pbm5lciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBwYWRkaW5nOiAyNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDMwcHggcmdiYShibGFjaywgLjEpO1xuICAgICAgfVxuXG4gICAgICAucG9wb3Zlci1hcnJvdyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgICZbYXJpYS1oaWRkZW49J3RydWUnXSB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzLCB2aXNpYmlsaXR5IC4xNXM7XG4gICAgfVxuXG4gICAgJlthcmlhLWhpZGRlbj0nZmFsc2UnXSB7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjE1cztcbiAgICB9XG4gIH1cbiIsIi5idG4ge1xuICAgICYuYnRuLXByZXNzYWJsZTphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDNweCk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCAzcHgpO1xuICAgIH1cblxuICAgIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbn1cblxuLy8gRGlzYWJsZSBPdXRsaW5lIG9uIGZvY3VzXG4uYnRuOmZvY3VzLCAuYnRuLmZvY3VzLCAuYnRuOmFjdGl2ZTpmb2N1cywgLmJ0bjphY3RpdmUuZm9jdXMsIC5idG4uYWN0aXZlOmZvY3VzLCAuYnRuLmFjdGl2ZS5mb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLmJ0bi1kZWZhdWx0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cbiAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICB9XG59XG5cbi5idG4tb3V0bGluZS1kZWZhdWx0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cbiAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICB9XG59XG5cbi5idG4tdGhlbWUge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi12YXJpYW50KCRscy1jb2xvci1wcmltYXJ5LCAkbHMtY29sb3ItcHJpbWFyeSk7XG4gICAgJGNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xufVxuXG4uYnRuLW91dGxpbmUtdGhlbWUge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJGxzLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uYnRuLXRoZW1lLWxpZ2h0IHtcbiAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudCgkbHMtY29sb3ItcHJpbWFyeS0tbGlnaHQsICRscy1jb2xvci1wcmltYXJ5LS1saWdodCk7XG4gICAgJGNvbG9yOiAkd2hpdGU7XG59XG5cbi8vIFJvdW5kZWQgQnV0dG9uXG4uYnRuLXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG5cbi5idG4gaSB7XG4gICAgd2lkdGg6IDEuMmVtO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5idG4taWNvbiB7XG4gICAgcGFkZGluZzogMC42cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxZW07XG5cbiAgICBpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLy8gU2l6ZXNcbi5idG4teHMge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwYWRkaW5nOiAzcHggMTBweDtcbn1cblxuLmJ0bi1mdWxsIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLy8gRXh0cmFcblxuLmxhZGRhLWJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbn1cblxuXG4vLyBDb2xvciBPdmVycmlkZXNcbi5idG4tc3VjY2VzcywuYnRuLXdhcm5pbmcsIC5idG4taW5mbyB7XG4gICAgY29sb3I6ICR3aGl0ZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cbn1cblxuLy9kcm9wZG93biBCdXR0b25cbi5idG4tZ3JvdXAgLmJ0bi1ncm91cCAuZHJvcGRvd24tZ3JvdXAge1xuXG4gICAgLmJ0biB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgfVxuICAgIC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxufVxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gICAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgLmRyb3Bkb3duLWdyb3VwIC5idG57XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbiAgICA+IC5idG4tZ3JvdXAgLmRyb3Bkb3duLWdyb3VwIC5idG57XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbn1cblxuLmJ0bi1jcmF0ZXIge1xuICAgIHdpZHRoOiAxNDhweDtcbiAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGZvbnQtZmFtaWx5OiBwb3BwaW5zO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuXG4gICAgLmJ0bi1sYWJlbCB7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgMDtcbiAgICB9XG59XG5cbi5idG4tY3JhdGVyOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAxMHB4IGF1dG8gIzgxN0FFMztcbn1cblxuLmJ0bi1jcmF0ZXI6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbn1cblxuLmJ0bi1jcmF0ZXItZGVmYXVsdCB7XG4gICAgY29sb3I6ICNGRkZGRkY7XG4gICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLXByaW1hcnk7XG5cbiAgICAuaWNvbi1mYS1zcGlubmVyIHtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxufVxuXG4uYnRuLWNyYXRlci1kZWZhdWx0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjNjM1QkYyO1xufVxuXG4uYnRuLWNyYXRlci1ob2xsb3cge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1wcmltYXJ5O1xuICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuXG4gICAgLmljb24tZmEtc3Bpbm5lciB7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICB9XG59XG5cbi5idG4tY3JhdGVyLWhvbGxvdzpob3ZlciB7XG4gICAgb3BhY2l0eTogMC45O1xuICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbn1cbiIsIi5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICNmZmRlMDA7XG4gIG91dGxpbmU6IDA7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTI1LCAyMDQsIDAuMjUpO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gI2ZmZGUwMDI5XG59IiwiLy8gY2FyZHMuc2NzcyAtIEN1c3RvbSBDYXJkc1xuLmNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICAgIC5jYXJkLWhlYWRlciB7XG5cbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcblxuICAgICAgICBpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxLjNlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGg2IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXNlY3Rpb24tdGl0bGU7XG4gICAgICAgIH1cblxuICAgICAgICBoNSB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5iZy1kYXJrIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1zZWNvbmRhcnk7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcHRpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAzMHB4O1xuICAgIH1cblxuICAgIC5zZWN0aW9uLXNlbWktdGl0bGUge1xuICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtc2VtaS1zZWN0aW9uLXRpdGxlO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgIH1cblxuICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICAmLndpdGgtdGFicyAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi10YWJzIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWxpbmsge1xuICAgICAgICAgICAgcGFkZGluZzogMWVtIDEuNWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJnLXByaW1hcnksXG4gICAgLmJnLWluZm8sXG4gICAgLmJnLXByaW1hcnksXG4gICAgLmJnLWRhcmssXG4gICAgLmJnLXN1Y2Nlc3MsXG4gICAgLmJnLWRhbmdlcixcbiAgICAuYmctd2FybmluZyB7XG5cbiAgICAgICAgaDMsIGg1LCBoNiB7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG5AbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblxuICAgIC5jYXJkXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgfVxuXG59XG5cblxuIiwiLy8gdGFicy5zY3NzIC0gVGFicyAmIEFjY29yZGlhbnNcblxuLnRhYnMgLnRhYi1jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOiAxLjJyZW07XG59XG5cbi50YWJzLWRlZmF1bHQge1xuXG4gICAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcblxuICAgICAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5hdi1saW5rOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLXNlY29uZGFyeTtcbiAgICB9XG5cbiAgICAubmF2LXRhYnMge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxzLWNvbG9yLXNlY29uZGFyeTtcbiAgICB9XG59XG5cbi50YWJzLXByaW1hcnkge1xuXG4gICAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuXG4gICAgICAgICY6aG92ZXIsICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5uYXYtbGluazpob3ZlciB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRicmFuZC1wcmltYXJ5O1xuICAgIH1cblxuICAgIC5uYXYtdGFicyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYnJhbmQtcHJpbWFyeTtcbiAgICB9XG59XG5cbi50YWJzLXNpbXBsZSB7XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrLS1saWdodDtcblxuICAgICAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0ZW4oJGxzLWNvbG9yLXByaW1hcnksIDMwJSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG5cbiAgICAgICAgICAgICY6aG92ZXIsICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi50YWJzLXZlcnRpY2FsIHtcblxuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgLm5hdi10YWJzIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRscy1jb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4ycmVtO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTFweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICBsaSBhIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLjJyZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuXG4gICAgICAgICAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGxzLWNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1zZWNvbmRhcnk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciwgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi50YWJzLXByaW1hcnkgLm5hdi10YWJzIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGJyYW5kLXByaW1hcnk7XG5cbiAgICAgICAgbGkgYSB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRicmFuZC1wcmltYXJ5O1xuXG4gICAgICAgICAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGJyYW5kLXByaW1hcnk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciwgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtcHJpbWFyeTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLnRhYnMtc2ltcGxlIC5uYXYtdGFicyB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkgYSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDNweCBzb2xpZCAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciwgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wYW5lbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIC4wNSk7XG5cbiAgICAucGFuZWwtaGVhZGluZyBhIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC5wYW5lbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG4gICAgfVxuXG4gICAgLnBhbmVsLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAwIDEuMjVyZW07XG4gICAgfVxufVxuXG4ucGFuZWwtZ3JvdXAgLnBhbmVsICsgLnBhbmVsIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiXG4udGFicyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbn1cblxuLnRhYiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMTBweCAzMHB4O1xuICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIC50YWItbGluayB7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFya1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBib3R0b206IC0ycHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGhlaWdodDogM3B4O1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIH1cblxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5hLWFjdGl2ZXtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjay0tbGlnaHQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYS1hY3RpdmU6OmFmdGVyIHtcbiAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGJvdHRvbTogLTJweDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAucm91dGVyLWxpbmstZXhhY3QtYWN0aXZlLmFjdGl2ZTo6YWZ0ZXIge1xuICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgYm90dG9tOiAtMnB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cblxuXG4gICAgLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZS5hY3RpdmUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrLS1saWdodCAhaW1wb3J0YW50O1xuICAgIH1cblxufVxuIiwiLnRhYmxlIHtcblxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgLy8gY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIHRoIHtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2stLWxpZ2h0O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zcHg7XG4gICAgfVxuXG4gICAgLnRhYmxlX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgLy8gb3BhY2l0eTogMDtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB0aGVhZCB0aCB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDI1cHg7XG4gICAgfVxuXG4gICAgLnRhYmxlLWNvbXBvbmVudF9fdGFibGVfX2JvZHkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IDAuMnM7XG4gICAgICAgIH1cblxuICAgICAgICB0cjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggNXB4IDE1cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wMyk7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAyNXB4IDE1cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxMHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDEwcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZC5wcmltYXJ5IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cblxuICAgIC5hY3Rpb24tZHJvcGRvd24ge1xuXG4gICAgICAgIC5kcm9wZG93bi1jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDVweCAwIDA7XG4gICAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMSkgMHB4IDFweCAzcHg7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGNvbG9yOiAjMDQwNDA1O1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2FyZC1ib2R5IC50YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XG5cbiAgICB0aCB7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBWdWUgVGFibGVcblxuLnRhYmxlLWNvbXBvbmVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tdG9wOiAtMjVweDtcbiAgICBtaW4taGVpZ2h0OiAzMDBweDtcbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fZmlsdGVyIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50YWJsZS1jb21wb25lbnRfX2ZpbHRlcl9fZmllbGQge1xuICAgIHBhZGRpbmc6IDAuMTVlbSAxLjI1ZW0gMC4xNWVtIDAuNzVlbTtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAjZTBlMGUwO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG5cbi50YWJsZS1jb21wb25lbnRfX2ZpbHRlcl9fY2xlYXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMmVtO1xuICAgIGNvbG9yOiAjMDA3NTkzO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fZmlsdGVyX19maWVsZDpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xufVxuXG4udGFibGUtY29tcG9uZW50X190YWJsZS13cmFwcGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fdGFibGUge1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICAgIHRhYmxlLWxheW91dDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwIDE1cHg7XG59XG5cbi50YWJsZS1jb21wb25lbnRfX3RhYmxlX19jYXB0aW9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IC0xMDAwMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fdGFibGUgdGgsXG4udGFibGUtY29tcG9uZW50X190YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMC43NWVtIDEuMjVlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi50YWJsZS1jb21wb25lbnRfX21lc3NhZ2Uge1xuICAgIGNvbG9yOiAjOTk5O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fdGgtLXNvcnQsXG4udGFibGUtY29tcG9uZW50X190aC0tc29ydC1hc2MsXG4udGFibGUtY29tcG9uZW50X190aC0tc29ydC1kZXNjIHtcbiAgICAvLyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fdGgtLXNvcnQtYXNjOmFmdGVyLFxuLnRhYmxlLWNvbXBvbmVudF9fdGgtLXNvcnQtZGVzYzphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDAuMjVlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6ICNiYmI7XG59XG5cbi50YWJsZS1jb21wb25lbnRfX3RoLS1zb3J0LWFzYzphZnRlciB7XG4gICAgY29udGVudDogXCLihpFcIjtcbn1cblxuLnRhYmxlLWNvbXBvbmVudF9fdGgtLXNvcnQtZGVzYzphZnRlciB7XG4gICAgY29udGVudDogXCLihpNcIjtcbn1cblxuXG4vLyBQYWdpbmF0aW9uXG4udGFibGUtY29tcG9uZW50IC5wYWdpbmF0aW9uIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcblxuICAgIC5wYWdlLWl0ZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmsge1xuICAgICAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGEgaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICBhLmRpc2FibGVkIGkge1xuICAgICAgICBjb2xvcjogI2Q5ZDlkOTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogYXV0bztcbiAgICB9XG5cbn1cblxudGFibGUuZnVsbC13aWR0aCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi50YWJsZS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLnRhYmxlLWFjdGlvbnMtYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5LS1saWdodDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IDAuMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWdyb3VwLmFjdGl2ZSB7XG5cbiAgICAgICAgLmRyb3Bkb3duLWNvbnRhaW5lciB7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLnRhYmxlLXN0YXRzIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxufVxuXG4uc2VsZWN0YWxsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRvcDogNDdweDtcbiAgICBsZWZ0OiAzNXB4O1xuICAgIHotaW5kZXg6IDEwO1xufVxuXG4udGFibGUtY29tcG9uZW50IHRkID4gc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgIGNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBsZWZ0OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHRvcDogMDtcbn1cblxuLnNlbGVjdC1hbGwtbGFiZWwge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhKG1heC13aWR0aDogJHNtYWxsLWJyZWFrcG9pbnQpIHtcbiAgICAuc2VsZWN0LWFsbC1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC5zZWxlY3RhbGwge1xuICAgICAgICB0b3A6IDIwcHg7XG4gICAgfVxuXG4gICAgLnRhYmxlLWNvbXBvbmVudCB7XG5cbiAgICAgICAgLmRyb3Bkb3duLWdyb3VwIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICB0b3A6IDE1cHg7XG4gICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIGxlZnQ6IC05OTk5cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgLTFweCAtMXB4IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQgIWltcG9ydGFudDtcblxuICAgICAgICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGZsZXg6IDEgMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDI1cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogdW5zZXQ7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bnRoLWxhc3QtY2hpbGQoMykge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpudGgtbGFzdC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgIHRkID4gc3BhbjpmaXJzdC1jaGlsZCAge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbGVmdDogMTIwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuaGFtYnVyZ2VyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIGZpbHRlcjtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1cztcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLmhhbWJ1cmdlci1ib3gge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuIH1cblxuLmhhbWJ1cmdlci1pbm5lciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNC41cHg7XG4gICAgcmlnaHQ6IDQuNXB4O1xuICAgIG1hcmdpbi10b3A6IC0ycHg7XG59XG5cbi5oYW1idXJnZXItaW5uZXIsXG4uaGFtYnVyZ2VyLWlubmVyOjpiZWZvcmUsXG4uaGFtYnVyZ2VyLWlubmVyOjphZnRlciB7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1idXR0b25zLWZvbnQtY29sb3I7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xNXM7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XG59XG5cbi5oYW1idXJnZXItaW5uZXI6OmJlZm9yZSxcbi5oYW1idXJnZXItaW5uZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG59XG5cbi5oYW1idXJnZXItaW5uZXI6OmJlZm9yZSB7XG4gICAgdG9wOiAtNXB4O1xufVxuXG4uaGFtYnVyZ2VyLWlubmVyOjphZnRlciB7XG4gICAgYm90dG9tOiAtNXB4O1xufVxuXG4uaGFtYnVyZ2VyLS1hcnJvd3R1cm4uaXMtYWN0aXZlIC5oYW1idXJnZXItaW5uZXIge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xufVxuXG4uaGFtYnVyZ2VyLS1hcnJvd3R1cm4uaXMtYWN0aXZlIC5oYW1idXJnZXItaW5uZXI6OmJlZm9yZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzcHgsIDFweCwgMCkgcm90YXRlKDQ1ZGVnKSBzY2FsZSgwLjcsIDEpO1xufVxuXG4uaGFtYnVyZ2VyLS1hcnJvd3R1cm4uaXMtYWN0aXZlIC5oYW1idXJnZXItaW5uZXI6OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgLTFweCwgMCkgcm90YXRlKC00NWRlZykgc2NhbGUoMC43LCAxKTtcbn1cbiIsIi5mYWRlLWVudGVyLWFjdGl2ZSwgLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4yc1xufVxuXG4uZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAwXG59XG4iLCIvLyBHYXVnZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmdhdWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZ2F1Z2UtbGcge1xuXG4gICAgLmJhc2ljLWdhdWdlLCAuZG9udXQtZ2F1Z2UsIC5jb2xvci1nYXVnZSB7XG4gICAgICAgIGhlaWdodDogMjUwcHg7XG4gICAgfVxuXG4gICAgLmdhdWdlLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgIH1cblxufVxuXG4uZ2F1Z2UtbWQge1xuXG4gICAgLmJhc2ljLWdhdWdlLCAuZG9udXQtZ2F1Z2UsIC5jb2xvci1nYXVnZSB7XG4gICAgICAgIGhlaWdodDogMTgwcHg7XG4gICAgfVxuXG59XG5cbi5nYXVnZS1zbSB7XG5cbiAgICAuYmFzaWMtZ2F1Z2UsIC5kb251dC1nYXVnZSwgLmNvbG9yLWdhdWdlIHtcbiAgICAgICAgaGVpZ2h0OiAxMjBweDtcbiAgICB9XG5cbiAgICAuZ2F1Z2UtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuXG59XG5cbi5nYXVnZS1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDYwJTtcbiAgICBsZWZ0OiAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgICYubWlkZGxlLWxhYmVsIHtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG59XG5cbi5nYXVnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50KSB7XG5cbiAgICAuZ2F1Z2UtbGcge1xuXG4gICAgICAgIC5iYXNpYy1nYXVnZSwgLmRvbnV0LWdhdWdlLCAuY29sb3ItZ2F1Z2Uge1xuICAgICAgICAgICAgaGVpZ2h0OiAxODBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5nYXVnZS1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLnBhY2Uge1xuICAtd2Via2l0LXBvaW50ZXItZXZlbnRzOiBub25lO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5wYWNlLWluYWN0aXZlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnBhY2UgLnBhY2UtcHJvZ3Jlc3Mge1xuICBiYWNrZ3JvdW5kOiBkYXJrZW4oJHBhY2UtbG9hZGVyLWNvbG9yLDEwJSk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMjAwMDtcbiAgdG9wOiAwO1xuICByaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMnB4O1xufVxuXG4ucGFjZSAucGFjZS1wcm9ncmVzcy1pbm5lciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwcHg7XG4gIHdpZHRoOiAxMDBweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3gtc2hhZG93OiAwIDAgMTBweCAkcGFjZS1sb2FkZXItY29sb3IsIDAgMCA1cHggJHBhY2UtbG9hZGVyLWNvbG9yO1xuICBvcGFjaXR5OiAxLjA7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7XG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKSB0cmFuc2xhdGUoMHB4LCAtNHB4KTtcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDNkZWcpIHRyYW5zbGF0ZSgwcHgsIC00cHgpO1xufVxuXG4ucGFjZSAucGFjZS1hY3Rpdml0eSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDIwMDA7XG4gIHRvcDogMTVweDtcbiAgcmlnaHQ6IDE1cHg7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGJvcmRlcjogc29saWQgMnB4IHRyYW5zcGFyZW50O1xuICBib3JkZXItdG9wLWNvbG9yOiAkcGFjZS1sb2FkZXItY29sb3I7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAkcGFjZS1sb2FkZXItY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBwYWNlLXNwaW5uZXIgNDAwbXMgbGluZWFyIGluZmluaXRlO1xuICAtbW96LWFuaW1hdGlvbjogcGFjZS1zcGlubmVyIDQwMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgLW1zLWFuaW1hdGlvbjogcGFjZS1zcGlubmVyIDQwMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgLW8tYW5pbWF0aW9uOiBwYWNlLXNwaW5uZXIgNDAwbXMgbGluZWFyIGluZmluaXRlO1xuICBhbmltYXRpb246IHBhY2Utc3Bpbm5lciA0MDBtcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwYWNlLXNwaW5uZXIge1xuICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gIDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHBhY2Utc3Bpbm5lciB7XG4gIDAlIHsgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgMTAwJSB7IC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuXG5ALW8ta2V5ZnJhbWVzIHBhY2Utc3Bpbm5lciB7XG4gIDAlIHsgLW8tdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gIDEwMCUgeyAtby10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbkAtbXMta2V5ZnJhbWVzIHBhY2Utc3Bpbm5lciB7XG4gIDAlIHsgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAxMDAlIHsgLW1zLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuQGtleWZyYW1lcyBwYWNlLXNwaW5uZXIge1xuICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuIiwiLnZ1ZS10YWJzLWRlbW8gLmNhcmQtYm9keSAuZGVmYXVsdCB7XG5cbiAgICAudGFicy1jb21wb25lbnQgLnRhYnMtY29tcG9uZW50LXRhYnMge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICB9XG5cbiAgICAuc3VmZml4IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2MwMztcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjM1ZW07XG4gICAgfVxuXG4gICAgLnByZWZpeCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkMWU4ZWI7XG4gICAgICAgIGNvbG9yOiAjMGM1MTc0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMzVlbTtcbiAgICB9XG5cbiAgICAucHJlZml4LFxuICAgIC5zdWZmaXgge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuMWVtO1xuICAgIH1cblxuICAgIC50YWJzLWNvbXBvbmVudCB7XG4gICAgICAgIG1hcmdpbjogMmVtIDA7XG4gICAgfVxuXG4gICAgLnBhZ2Utc3VidGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVlbTtcbiAgICB9XG59XG5cbi5zdWZmaXgge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTAuNzI1ZW07XG4gICAgdG9wOiAtMC43MjVlbTtcbn1cblxuLnRhYnMtY29tcG9uZW50IHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuXG4vLyBUYWJzIERlZmF1bHRcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4udGFicy1jb21wb25lbnQudGFicy1kZWZhdWx0IHtcblxuICAgIC50YWJzLWNvbXBvbmVudC10YWJzIHtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgIH1cblxuICAgIC50YWJzLWNvbXBvbmVudC10YWIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4xcmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAudGFicy1jb21wb25lbnQtdGFiIHtcbiAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgcGFkZGluZzogMC43NWVtIDJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzMzMzO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICMzMzMzMzM7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZGUwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzO1xuICAgICAgICAgICAgY29sb3I6ICNmZmRlMDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFicy1jb21wb25lbnQtdGFiOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMztcbiAgICB9XG5cbiAgICAudGFicy1jb21wb25lbnQtcGFuZWxzIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMzMzMzMzMgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAwZW0gIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG5cbn1cblxuLy8gVGFicyBEZWZhdWx0IFByaW1hcnlcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4udGFicy1jb21wb25lbnQudGFicy1kZWZhdWx0LnByaW1hcnkge1xuXG4gICAgLnRhYnMtY29tcG9uZW50LXRhYiB7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogIzMzMzMzMztcbiAgICAgICAgfVxuXG4gICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDdkY2M7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA3ZGNjO1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIH1cbiAgICAgICAgICYuaXMtYWN0aXZlIGEge1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDA3ZGNjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRhYnMtY29tcG9uZW50LXBhbmVscyB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjMDA3ZGNjICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyBUYWJzIFZlcnRpY2FsXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLnRhYnMtY29tcG9uZW50LnRhYnMtdmVydGljYWwge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblxuICAgIC50YWJzLWNvbXBvbmVudC10YWJzIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICMzMzMzMzMgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuXG4gICAgICAgIC50YWJzLWNvbXBvbmVudC10YWIge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4ycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYnMtY29tcG9uZW50LXRhYiB7XG4gICAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjc1ZW0gMnJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMzMzMzMzO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMzMzMzMzO1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzMzMzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmlzLWFjdGl2ZSBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZGUwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJzLWNvbXBvbmVudC10YWI6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMzMzMztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWJzLWNvbXBvbmVudC1wYW5lbHMge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMGVtIDBlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDJlbSAhaW1wb3J0YW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cbn1cblxuLy8gVGFicyBWZXJ0aWNhbCBQcmltYXJ5XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLnRhYnMtY29tcG9uZW50LnRhYnMtdmVydGljYWwucHJpbWFyeSAudGFicy1jb21wb25lbnQtdGFicyB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzAwN2RjYyAhaW1wb3J0YW50O1xuXG4gICAgLnRhYnMtY29tcG9uZW50LXRhYiB7XG5cbiAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDdkY2M7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWJzLWNvbXBvbmVudC10YWI6aG92ZXIge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDA3ZGNjO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgfVxufVxuXG4vLyBUYWJzIFNpbXBsZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi50YWJzLWNvbXBvbmVudC50YWJzLXNpbXBsZSB7XG5cbiAgICAudGFicy1jb21wb25lbnQtdGFicyB7XG4gICAgICAgIHBhZGRpbmc6IDBweDtcblxuICAgICAgICAudGFicy1jb21wb25lbnQtdGFiIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiBub25lO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYnMtY29tcG9uZW50LXRhYiB7XG4gICAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVlbSAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzMzMzMzM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzMzMzMzMztcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjZmZmMjk5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNmZmRlMDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuaXMtYWN0aXZlIGE6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFicy1jb21wb25lbnQtcGFuZWxzIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAwZW0gIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG59XG5cbi8vIFRhYnMgU2ltcGxlIFZlcnRpY2FsXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLnRhYnMtY29tcG9uZW50LnRhYnMtc2ltcGxlLXZlcnRpY2FsIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG5cbiAgICAudGFicy1jb21wb25lbnQtdGFicyB7XG4gICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgICAudGFicy1jb21wb25lbnQtdGFiIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJzLWNvbXBvbmVudC10YWIge1xuICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVlbSAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzMzMzMzM7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkICNmZmYyOTk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkICNmZmRlMDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuaXMtYWN0aXZlIGE6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFicy1jb21wb25lbnQtcGFuZWxzIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIHBhZGRpbmc6IDBlbSAwZW0gIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyZW0gIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG59XG4udGFicy1jb21wb25lbnQtdGFicyB7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG59IiwiLmRyb3Bkb3duLWdyb3VwIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLmFjdGl2ZSAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcbiAgICAgICAgcGFkZGluZzogLjVyZW07XG4gICAgICAgIG1hcmdpbjogLjEyNXJlbSAwIDAgLjEyNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3I7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iZztcbiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogLjI1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiAkc2hhZG93ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1ncm91cCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1ncm91cC1pdGVtIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1hY3RpdmF0b3Ige1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDVweCA0cHggMDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIHRvcDogMThweDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1ncm91cC5hY3RpdmUgLmRyb3Bkb3duLWFjdGl2YXRvciB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGRyb3Bkb3duLWhlYWRlci1jb2xvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGxzLWNvbG9yLXByaW1hcnkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgbGVmdDogMTAwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG1hcmdpbjogLjEyNXJlbSAuMTI1cmVtIDA7XG5cbiAgICAgICAgICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvbi1ncm91cC1pdGVtIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtLWRpdmlkZXIge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHdoaXRlO1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgbWFyZ2luOiAuNXJlbSAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbn1cblxuLmRyb3Bkb3duLWdyb3VwLmRyb3Bkb3duLWxpZ2h0IHtcblxuICAgIC5kcm9wZG93bi1jb250YWluZXIge1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0ZW4oJGxzLWNvbG9yLWdyYXktLWRhcmssIDEwJSk7XG5cbiAgICAgICAgLmRyb3Bkb3duLWdyb3VwLWl0ZW0gYSB7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3Bkb3duLWdyb3VwLWl0ZW0gYS5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJGxzLWNvbG9yLWdyYXksIDclKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93bi1ncm91cC1pdGVtIGE6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkbHMtY29sb3ItZ3JheSwgNyUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3Bkb3duLWFjdGl2YXRvcjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcmsgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcGRvd24tY29udGFpbmVyIC5kcm9wZG93bi1ncm91cC5hY3RpdmUgLmRyb3Bkb3duLWFjdGl2YXRvciB7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJGxzLWNvbG9yLWdyYXksIDclKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWl0ZW0tZGl2aWRlciB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkbHMtY29sb3ItYmxhY2s7XG4gICAgfVxufVxuXG4uZHJvcGRvd24taXRlbSB7XG5cbiAgICAuZHJvcGRvd24taXRlbS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuICAgIH1cbn1cblxuLmFjdGlvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6MTtcblxuICAgIC5hY3Rpb24tYnRuIHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cbn1cbiIsIi52ZHAtZGF0ZXBpY2tlcl9fY2FsZW5kYXIgLmNlbGwge1xuXG4gICAgJjpub3QoLmJsYW5rKTpub3QoLmRpc2FibGVkKVxuICAgIHtcbiAgICAgICAgJi5kYXk6aG92ZXIsXG4gICAgICAgICYubW9udGg6aG92ZXIsXG4gICAgICAgICYueWVhcjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItcHJpbWFyeSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgICYuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItcHJpbWFyeSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICBcbiAgICAmLmhpZ2hsaWdodGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDpsaWdodGVuKCRscy1jb2xvci1wcmltYXJ5LDI1JSkgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCJmaWVsZHNldFtkaXNhYmxlZF0gLm11bHRpc2VsZWN0IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmluLXZhbGlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItcmVkICFpbXBvcnRhbnQ7XG59XG5cbi5tdWx0aXNlbGVjdCB7XG4gICAgbWluLWhlaWdodDogNDBweDtcbn1cblxuLm11bHRpc2VsZWN0X19zcGlubmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDFweDtcbiAgICB0b3A6IDFweDtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDM1cHg7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLm11bHRpc2VsZWN0X19zcGlubmVyOmJlZm9yZSxcbi5tdWx0aXNlbGVjdF9fc3Bpbm5lcjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbjogLThweCAwIDAgLThweDtcbiAgICB6LWluZGV4OiA1O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGJvcmRlci1jb2xvcjogIzQxYjg4MyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCB0cmFuc3BhcmVudDtcbn1cblxuLm11bHRpc2VsZWN0X19zcGlubmVyOmJlZm9yZSB7XG4gICAgYW5pbWF0aW9uOiBzcGlubmluZyAyLjRzIGN1YmljLWJlemllcigwLjQxLCAwLjI2LCAwLjIsIDAuNjIpO1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xufVxuXG4ubXVsdGlzZWxlY3RfX3NwaW5uZXI6YWZ0ZXIge1xuICAgIGFuaW1hdGlvbjogc3Bpbm5pbmcgMi40cyBjdWJpYy1iZXppZXIoMC41MSwgMC4wOSwgMC4yMSwgMC44KTtcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbn1cblxuLm11bHRpc2VsZWN0X19sb2FkaW5nLWVudGVyLWFjdGl2ZSxcbi5tdWx0aXNlbGVjdF9fbG9hZGluZy1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ubXVsdGlzZWxlY3RfX2xvYWRpbmctZW50ZXIsXG4ubXVsdGlzZWxlY3RfX2xvYWRpbmctbGVhdmUtYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAwO1xufVxuXG4ubXVsdGlzZWxlY3QsXG4ubXVsdGlzZWxlY3RfX2lucHV0LFxuLm11bHRpc2VsZWN0X19zaW5nbGUge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuLm11bHRpc2VsZWN0IHtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogNDBweDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGNvbG9yOiAjMzU0OTVlO1xufVxuXG4ubXVsdGlzZWxlY3QgKiB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLm11bHRpc2VsZWN0OmZvY3VzIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjODE3YWUzICFpbXBvcnRhbnQ7XG59XG5cbi5tdWx0aXNlbGVjdC0tZGlzYWJsZWQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLm11bHRpc2VsZWN0LS1hY3RpdmUge1xuICAgIHotaW5kZXg6IDUwO1xufVxuXG4ubXVsdGlzZWxlY3QtLWFjdGl2ZTpub3QoLm11bHRpc2VsZWN0LS1hYm92ZSkgLm11bHRpc2VsZWN0X19jdXJyZW50LFxuLm11bHRpc2VsZWN0LS1hY3RpdmU6bm90KC5tdWx0aXNlbGVjdC0tYWJvdmUpIC5tdWx0aXNlbGVjdF9faW5wdXQsXG4ubXVsdGlzZWxlY3QtLWFjdGl2ZTpub3QoLm11bHRpc2VsZWN0LS1hYm92ZSkgLm11bHRpc2VsZWN0X190YWdzIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4ubXVsdGlzZWxlY3QtLWFjdGl2ZSAubXVsdGlzZWxlY3RfX3NlbGVjdCB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVaKDE4MGRlZyk7XG59XG4ubXVsdGlzZWxlY3QtLWFib3ZlLm11bHRpc2VsZWN0LS1hY3RpdmUgLm11bHRpc2VsZWN0X19jdXJyZW50LFxuLm11bHRpc2VsZWN0LS1hYm92ZS5tdWx0aXNlbGVjdC0tYWN0aXZlIC5tdWx0aXNlbGVjdF9faW5wdXQsXG4ubXVsdGlzZWxlY3QtLWFib3ZlLm11bHRpc2VsZWN0LS1hY3RpdmUgLm11bHRpc2VsZWN0X190YWdzIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4ubXVsdGlzZWxlY3RfX2lucHV0LFxuLm11bHRpc2VsZWN0X19zaW5nbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWluLWhlaWdodDogMjBweDtcbiAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcGFkZGluZzogMCAwIDAgNXB4O1xuICAgIHdpZHRoOiBjYWxjKDEwMCUpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlciAwLjFzIGVhc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAvLyBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLm11bHRpc2VsZWN0X19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbn1cblxuLm11bHRpc2VsZWN0X190YWcgfiAubXVsdGlzZWxlY3RfX2lucHV0LFxuLm11bHRpc2VsZWN0X190YWcgfiAubXVsdGlzZWxlY3RfX3NpbmdsZSB7XG4gICAgd2lkdGg6IGF1dG87XG59XG4ubXVsdGlzZWxlY3RfX2lucHV0OmhvdmVyLFxuLm11bHRpc2VsZWN0X19zaW5nbGU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogI2NmY2ZjZjtcbn1cbi5tdWx0aXNlbGVjdF9faW5wdXQ6Zm9jdXMsXG4ubXVsdGlzZWxlY3RfX3NpbmdsZTpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjYThhOGE4O1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXVsdGlzZWxlY3RfX3NpbmdsZSB7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm11bHRpc2VsZWN0X190YWdzLXdyYXAge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cbi5tdWx0aXNlbGVjdF9fdGFncyB7XG4gICAgbWluLWhlaWdodDogNDBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiA4cHggNDBweCAwIDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgZm9udC1zaXplOiAxNHB4O1xufVxuLm11bHRpc2VsZWN0X190YWcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogNHB4IDI2cHggNHB4IDEwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBiYWNrZ3JvdW5kOiAjNDFiODgzO1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm11bHRpc2VsZWN0X190YWctaWNvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbi1sZWZ0OiA3cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXN0eWxlOiBpbml0aWFsO1xuICAgIHdpZHRoOiAyMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cbi5tdWx0aXNlbGVjdF9fdGFnLWljb246YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiw5dcIjtcbiAgICBjb2xvcjogIzI2NmQ0ZDtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4ubXVsdGlzZWxlY3RfX3RhZy1pY29uOmZvY3VzLFxuLm11bHRpc2VsZWN0X190YWctaWNvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogIzM2OWE2ZTtcbn1cbi5tdWx0aXNlbGVjdF9fdGFnLWljb246Zm9jdXM6YWZ0ZXIsXG4ubXVsdGlzZWxlY3RfX3RhZy1pY29uOmhvdmVyOmFmdGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG59XG4ubXVsdGlzZWxlY3RfX2N1cnJlbnQge1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDhweCAxMnB4IDA7XG4gICAgcGFkZGluZy1yaWdodDogMzBweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXVsdGlzZWxlY3RfX3NlbGVjdCB7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHJpZ2h0OiAxcHg7XG4gICAgdG9wOiAxcHg7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7XG59XG4ubXVsdGlzZWxlY3RfX3NlbGVjdDpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IDY1JTtcbiAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDAgNXB4O1xuICAgIGJvcmRlci1jb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcmsgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgY29udGVudDogXCJcIjtcbn1cbi5tdWx0aXNlbGVjdF9fcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xufVxuLm11bHRpc2VsZWN0LS1hY3RpdmUgLm11bHRpc2VsZWN0X19wbGFjZWhvbGRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5tdWx0aXNlbGVjdF9fY29udGVudC13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAyNDBweDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDtcbiAgICB6LWluZGV4OiA1MDtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubXVsdGlzZWxlY3RfX2NvbnRlbnQge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm11bHRpc2VsZWN0LS1hYm92ZSAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciB7XG4gICAgYm90dG9tOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U4ZThlODtcbn1cbi5tdWx0aXNlbGVjdF9fY29udGVudDo6d2Via2l0LXNjcm9sbGJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5tdWx0aXNlbGVjdF9fZWxlbWVudCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4ubXVsdGlzZWxlY3RfX29wdGlvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMTJweDtcbiAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5tdWx0aXNlbGVjdF9fb3B0aW9uOmFmdGVyIHtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbn1cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQge1xuICAgIGJhY2tncm91bmQ6ICM0MWI4ODM7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG4ubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0OmFmdGVyIHtcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc2VsZWN0KTtcbiAgICBiYWNrZ3JvdW5kOiAjNDFiODgzO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZDogI2YzZjNmMztcbiAgICBjb2xvcjogIzM1NDk1ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1zZWxlY3RlZDphZnRlciB7XG4gICAgY29udGVudDogYXR0cihkYXRhLXNlbGVjdGVkKTtcbiAgICBjb2xvcjogc2lsdmVyO1xufVxuLm11bHRpc2VsZWN0X19vcHRpb24tLXNlbGVjdGVkLm11bHRpc2VsZWN0X19vcHRpb24tLWhpZ2hsaWdodCB7XG4gICAgYmFja2dyb3VuZDogI2ZmNmE2YTtcbiAgICBjb2xvcjogI2ZmZjtcbn1cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1zZWxlY3RlZC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQ6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmZjZhNmE7XG4gICAgY29udGVudDogYXR0cihkYXRhLWRlc2VsZWN0KTtcbiAgICBjb2xvcjogI2ZmZjtcbn1cblxuLm11bHRpc2VsZWN0LS1kaXNhYmxlZCAubXVsdGlzZWxlY3RfX2N1cnJlbnQsXG4ubXVsdGlzZWxlY3QtLWRpc2FibGVkIC5tdWx0aXNlbGVjdF9fc2VsZWN0IHtcbiAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgY29sb3I6ICRscy1jb2xvci1ncmF5O1xufVxuXG4ubXVsdGlzZWxlY3QtLWRpc2FibGVkIC5tdWx0aXNlbGVjdF9fdGFncyB7XG4gICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbn1cblxuLm11bHRpc2VsZWN0LS1kaXNhYmxlZCAubXVsdGlzZWxlY3RfX2lucHV0LFxuLm11bHRpc2VsZWN0LS1kaXNhYmxlZCAubXVsdGlzZWxlY3RfX3NpbmdsZSB7XG4gICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbn1cblxuLm11bHRpc2VsZWN0X19vcHRpb24tLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZGRkZGRkICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiB0ZXh0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubXVsdGlzZWxlY3RfX29wdGlvbi0tZ3JvdXAge1xuICAgIGJhY2tncm91bmQ6ICNlZGVkZWQ7XG4gICAgY29sb3I6ICMzNTQ5NWU7XG59XG5cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1ncm91cC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQge1xuICAgIGJhY2tncm91bmQ6ICMzNTQ5NWU7XG4gICAgY29sb3I6ICNmZmY7XG59XG5cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1ncm91cC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQ6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6ICMzNTQ5NWU7XG59XG5cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1kaXNhYmxlZC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQge1xuICAgIGJhY2tncm91bmQ6ICNkZWRlZGU7XG59XG5cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1ncm91cC1zZWxlY3RlZC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQge1xuICAgIGJhY2tncm91bmQ6ICNmZjZhNmE7XG4gICAgY29sb3I6ICNmZmY7XG59XG5cbi5tdWx0aXNlbGVjdF9fb3B0aW9uLS1ncm91cC1zZWxlY3RlZC5tdWx0aXNlbGVjdF9fb3B0aW9uLS1oaWdobGlnaHQ6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmZjZhNmE7XG4gICAgY29udGVudDogYXR0cihkYXRhLWRlc2VsZWN0KTtcbiAgICBjb2xvcjogI2ZmZjtcbn1cblxuLm11bHRpc2VsZWN0LWVudGVyLWFjdGl2ZSxcbi5tdWx0aXNlbGVjdC1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xufVxuXG4ubXVsdGlzZWxlY3QtZW50ZXIsXG4ubXVsdGlzZWxlY3QtbGVhdmUtYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAwO1xufVxuXG4ubXVsdGlzZWxlY3RfX3N0cm9uZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4qW2Rpcj1cInJ0bFwiXSAubXVsdGlzZWxlY3Qge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4qW2Rpcj1cInJ0bFwiXSAubXVsdGlzZWxlY3RfX3NlbGVjdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMXB4O1xufVxuXG4qW2Rpcj1cInJ0bFwiXSAubXVsdGlzZWxlY3RfX3RhZ3Mge1xuICAgIHBhZGRpbmc6IDhweCA4cHggMHB4IDQwcHg7XG59XG5cbipbZGlyPVwicnRsXCJdIC5tdWx0aXNlbGVjdF9fY29udGVudCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbipbZGlyPVwicnRsXCJdIC5tdWx0aXNlbGVjdF9fb3B0aW9uOmFmdGVyIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAwO1xufVxuXG4qW2Rpcj1cInJ0bFwiXSAubXVsdGlzZWxlY3RfX2NsZWFyIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxMnB4O1xufVxuXG4qW2Rpcj1cInJ0bFwiXSAubXVsdGlzZWxlY3RfX3NwaW5uZXIge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFweDtcbn1cblxuQGtleWZyYW1lcyBzcGlubmluZyB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDApO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDJ0dXJuKTtcbiAgICB9XG59XG5cbi5tdWx0aXNlbGVjdCB7XG5cbiAgICAubXVsdGlzZWxlY3RfX29wdGlvbi0taGlnaGxpZ2h0IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcblxuICAgICAgICAmLm11bHRpc2VsZWN0X19vcHRpb24tLXNlbGVjdGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXVsdGlzZWxlY3RfX29wdGlvbi0tc2VsZWN0ZWQge1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICB9XG5cbiAgICAubXVsdGlzZWxlY3RfX3RhZ3Mtd3JhcCAubXVsdGlzZWxlY3RfX3RhZyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuXG4gICAgICAgIC5tdWx0aXNlbGVjdF9fdGFnLWljb24ge1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5lcnJvciB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1yZWQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG59XG4iLCJcbi5jdXN0b21lci1zZWxlY3Qge1xuXG4gICAgbGFiZWwge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLm1haW4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAuc2VhcmNoLWJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgcGFkZGluZzogMTVweCAxNXB4IDVweCAxNXB4O1xuXG4gICAgICAgICAgICAuc2VhcmNoLWljb24ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDRweCAwIDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5uby1kYXRhLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMjBweDtcblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogMTczcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDE3M3B4O1xuXG4gICAgICAgIC5saXN0LWl0ZW0ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjNweDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE4NSwgMTkzLCAyMDksIDAuNDEpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmF2YXRhciB7XG4gICAgICAgICAgICB3aWR0aDogMzVweDtcbiAgICAgICAgICAgIGhlaWdodDogMzVweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6JGxzLWNvbG9yLWdyYXk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBtYXJnaW46IDFweCAyMXB4IDAgMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hbWUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IFBvcHBpbnM7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgMCAwO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zdWItdGl0bGUge1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBQb3BwaW5zO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgMCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmxpc3QtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5saXN0LWl0ZW06aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQ7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLml0ZW0tc2VsZWN0IHtcblxuICAgIC5tYWluLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTVweCAxNXB4IDAgMTVweDtcblxuICAgICAgICAuc2VhcmNoLWJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAubm8tZGF0YS1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDIwcHg7XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAwIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcblxuICAgICAgICAubGlzdC1pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDIzcHg7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA1NnB4O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMTg1LCAxOTMsIDIwOSwgMC40MSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubGlzdC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpc3QtaXRlbTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIudGF4LXNlbGVjdCB7XG5cbiAgICAubWFpbi1zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDE1cHggMTVweCAwIDE1cHg7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1iYXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5uby1kYXRhLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgcGFkZGluZzogMjBweCAyMHB4O1xuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogMTEycHg7XG5cbiAgICAgICAgLmxpc3QtaXRlbSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDU2cHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxODUsIDE5MywgMjA5LCAwLjQxKTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzI2MjYzMDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubGlzdC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpc3QtaXRlbTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pdGVtLWRpc2FibGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICAgICAgei1pbmRleDogLTEwO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5pbWFnZS11cGxvYWQtYm94IHtcbiAgICBoZWlnaHQ6IDExMHB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAucHJldmlldy1sb2dvIHtcbiAgICAgICAgbWF4LWhlaWdodDogODAlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIGFuaW1hdGlvbjogZmFkZUluIDJzIGVhc2U7XG4gICAgfVxuXG4gICAgLnVwbG9hZC1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAudXBsb2FkLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICB9XG5cbiAgICAudXBsb2FkLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyM3B4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuXG4gICAgLndoaXRlLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyM3B4O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgIC5vdmVybGF5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjVzIGVhc2U7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgLm92ZXJsYXkge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4uYXZhdGFyLXVwbG9hZCB7XG4gICAgaGVpZ2h0OiAxMzBweDtcbiAgICB3aWR0aDogMTMwcHg7XG4gICAgLnByZXZpZXctbG9nbyB7XG4gICAgICAgIG1heC13aWR0aDogODAlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBmYWRlSW57XG4gICAgICAwJXtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cbiAgICAgIDEwMCV7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxufVxuXG5cbiIsIi5wYXltZW50LW1vZGVzLW1vZGFsIHtcblxuICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMjBweDtcbiAgICB9XG5cbiAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAucmVxdWlyZWQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIC8vIGxlZnQ6IC0xMHB4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXJlZDtcbiAgICB9XG5cbiAgICAuY29tcG91bmQtdGF4LXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDlweDtcbiAgICB9XG5cbn1cblxuQG1lZGlhKG1heC13aWR0aDogJHgtc21hbGwtYnJlYWtwb2ludCApIHtcblxuICAgIC5iYXNlLW1vZGFsIHtcblxuICAgICAgICAucGF5bWVudC1tb2Rlcy1tb2RhbC1tb2RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG5cbiAgICAgICAgICAgIC5pbnB1dC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi5pdGVtLXVuaXQtbW9kYWwge1xuXG4gICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgcGFkZGluZzogMjBweCAyMHB4O1xuICAgIH1cblxuICAgIC5pbnB1dC1sYWJlbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGVuZDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5yZXF1aXJlZCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgLy8gbGVmdDogLTEwcHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcmVkO1xuICAgIH1cblxuICAgIC5jb21wb3VuZC10YXgtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogOXB4O1xuICAgIH1cblxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50ICkge1xuXG4gICAgLmJhc2UtbW9kYWwge1xuXG4gICAgICAgIC5pdGVtLXVuaXQtbW9kYWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMHZ3O1xuXG4gICAgICAgICAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIubWFpbC10ZXN0LW1vZGFsIHtcblxuICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMjBweDtcbiAgICB9XG5cbiAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAucmVxdWlyZWQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcmVkO1xuICAgIH1cblxuICAgIC5jb21wb3VuZC10YXgtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogOXB4O1xuICAgIH1cblxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50ICkge1xuXG4gICAgLmJhc2UtbW9kYWwge1xuXG4gICAgICAgIC5tYWlsLXRlc3QtbW9kYWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMHZ3O1xuXG4gICAgICAgICAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCJcbi5iYXNlLW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoNCw0LDUsMC4xKTtcbiAgICB6LWluZGV4OiAxMDAwMTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAubW9kYWwtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDMwcHggMzBweCAyMHB4IDMwcHggIWltcG9ydGFudDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tb2RhbC1oZWFkaW5nIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTcuNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tb2RhbC1ib2R5IHtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGJveC1zaGFkb3c6ICRzaGFkb3cteGw7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgICYuc2l6ZS1sZyAubW9kYWwtYm9keSB7XG4gICAgICAgIG1heC13aWR0aDogODAwcHhcbiAgICB9XG5cbiAgICAmLnNpemUtc20gLm1vZGFsLWJvZHkge1xuICAgICAgICBtYXgtd2lkdGg6IDQwMHB4XG4gICAgfVxuXG4gICAgLmNsb3NlLWljb24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgdG9wOiAyM3B4O1xuICAgICAgICByaWdodDogMTVweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbn1cblxuXG5AbWVkaWEgKG1heC13aWR0aDogJHgtc21hbGwtYnJlYWtwb2ludCkge1xuICAgIC5iYXNlLW1vZGFsIHtcblxuICAgICAgICAubW9kYWwtYm9keSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4O1xuXG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuIiwiLmJhc2UtbW9kYWwgLm1vZGFsLWJvZHkge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gfVxuXG4uaXRlbS1tb2RhbCB7XG5cbiAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDIwcHg7XG4gICAgfVxuXG4gICAgLmNvbC1mb3JtLWxhYmVsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogZW5kO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLnJlcXVpcmVkIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogLTEwcHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcmVkO1xuICAgIH1cblxufVxuXG5cbkBtZWRpYShtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQgKSB7XG5cbiAgICAuYmFzZS1tb2RhbCAuaXRlbS1tb2RhbCAuaW5wdXQtbGFiZWx7XG5cbiAgICAgICAgLml0ZW0tbW9kYWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMHZ3O1xuXG4gICAgICAgICAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXF1aXJlZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICBjb2xvcjogI0ZCNzE3ODtcbiAgICAgICAgfVxuXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICB9XG5cbn1cbiIsIi50ZW1wbGF0ZS1tb2RhbCB7XG5cbiAgICAudGVtcGxhdGUtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICB9XG5cbiAgICAudGVtcGxhdGUtaW1nIHtcbiAgICAgICAgbWFyZ2luOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgfVxuXG4gICAgLnNlbGVjdGVkLXRlbXBsYXRlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAuY2hlY2staWNvbiB7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICB0b3A6IC02cHg7XG4gICAgICAgIHJpZ2h0OiAtNXB4O1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICB9XG5cbiAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDIwcHg7XG5cbiAgICAgICAgLmJ0bi1jcmF0ZXIge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50KSB7XG5cbiAgICAuYmFzZS1tb2RhbCB7XG5cbiAgICAgICAgLnRlbXBsYXRlLW1vZGFsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcblxuICAgICAgICAgICAgLnRlbXBsYXRlLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIuY3VzdG9tZXItbW9kYWwge1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gICAgfVxuXG4gICAgLmNvbC1mb3JtLWxhYmVsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogZW5kO1xuICAgICAgICBmb250LWZhbWlseTogcG9wcGlucywgc2Fucy1zZXJpZjtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLnJlcXVpcmVkIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXJlZDtcbiAgICAgICAgcmlnaHQ6IC0xMHB4O1xuICAgIH1cblxuICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMjBweDtcblxuICAgICAgICAuYnRuLWNyYXRlciB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb3B5LWFkZHJlc3MtYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG5cbn1cblxuXG5AbWVkaWEgKG1heC13aWR0aDogJHgtc21hbGwtYnJlYWtwb2ludCkge1xuXG4gICAgLmJhc2UtbW9kYWwge1xuXG4gICAgICAgIC5jdXN0b21lci1tb2RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG5cbiAgICAgICAgICAgIC5yZXF1aXJlZCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIudGF4LXR5cGUtbW9kYWwge1xuXG4gICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgcGFkZGluZzogMjBweCAyMHB4O1xuICAgIH1cblxuICAgIC5pbnB1dC1sYWJlbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGVuZDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5yZXF1aXJlZCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogLTEwcHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcmVkO1xuICAgIH1cblxuICAgIC5jb21wb3VuZC10YXgtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogOXB4O1xuICAgIH1cblxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50ICkge1xuXG4gICAgLmJhc2UtbW9kYWwge1xuXG4gICAgICAgIC50YXgtdHlwZS1tb2RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG5cbiAgICAgICAgICAgIC5pbnB1dC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi5jYXRlZ29yeS1tb2RhbCB7XG5cbiAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDIwcHg7XG4gICAgfVxuXG4gICAgLmNvbC1mb3JtLWxhYmVsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogZW5kO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLnJlcXVpcmVkIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogLTEwcHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcmVkO1xuICAgIH1cblxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50ICkge1xuXG4gICAgLmJhc2UtbW9kYWwge1xuXG4gICAgICAgIC5jYXRlZ29yeS1tb2RhbCB7XG5cbiAgICAgICAgICAgIC5pbnB1dC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn0iLCIvLyBEYXNoYm9hcmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmRhc2hib2FyZCB7XG5cbiAgICAuZGFzaGJvYXJkLXRhYmxlXG4gICAgLnRhYmxlLWNvbXBvbmVudCB7XG5cbiAgICAgICAgLmRhc2hib2FyZC1yZWNlbnQtaW52b2ljZS1vcHRpb25zIHtcblxuICAgICAgICAgICAgLmRyb3Bkb3duLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDVweCAwIC03NXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG4uZGFzaGJveCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICBpIHtcbiAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICBsZWZ0OiA0MHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTNweDtcbiAgICB9XG5cbiAgICAudGl0bGUge1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDE3LjVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB9XG5cbiAgICAuYW1vdW50IHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzRweDtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgIH1cbn1cblxuLmRhc2gtaXRlbSB7XG4gICAgZmxleDogMztcbiAgICBwYWRkaW5nOiAwIDE1cHggMCAxNXB4O1xufVxuLmRhc2gtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgZmxleDogNVxufVxuXG4uZGFzaGJvYXJkLWNhcmQgLmNhcmQtaGVhZGVyIHtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTcuNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMXB4O1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC55ZWFyLXNlbGVjdG9yIHtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgfVxufVxuXG4uZ3JhcGgtYm9keSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuXG4gICAgLmNoYXJ0LWRlc2Mge1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgcGFkZGluZzogMFxuICAgIH1cblxuICAgIC5zdGF0cyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMHB4O1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNjcmlwdGlvbjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4XG4gICAgICAgIH1cblxuICAgICAgICAudG90YWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyNC41cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDI1cHhcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRhYmxlLXJvdyB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgIC50YWJsZS1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgICAgICAudGFibGUtdGl0bGUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjFweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gRWNvbW1lcmNlXG5cbi5kYXNoYm94LWxpbmUtcHJvZ3Jlc3Mge1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGkge1xuICAgICAgICByaWdodDogMzBweDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgdG9wOiAzMHB4O1xuICAgIH1cblxuICAgIC5wcm9ncmVzcyB7XG4gICAgICAgIGhlaWdodDogMC41cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgfVxuXG4gICAgLnRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgZm9udC1zaXplOiAyNnB4O1xuICAgIH1cbn1cblxuLmRhc2hib3gtY2lyY2xlLXByb2dyZXNzIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmc6IDMwcHg7XG5cbiAgICAuZWFzeS1waWUtY2hhcnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAzMHB4O1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTQwMHB4KSB7XG4gICAgLmRhc2hib3gge1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuXG4gICAgICAgIGkge1xuICAgICAgICAgICAgbGVmdDogMzBweDtcbiAgICAgICAgICAgIHRvcDogMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuZGFzaGJveC1saW5lLXByb2dyZXNzIGkge1xuICAgICAgICAgICAgcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhc2hib3gtY2lyY2xlLXByb2dyZXNzIHtcbiAgICAgICAgcGFkZGluZzogMzBweDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuZGFzaGJveCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG5cbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFtb3VudCB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ3JhcGgtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgLnN0YXRzIHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuXG4gICAgICAgICAgICAudG90YWwge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzozMHB4IDI1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZGVzY3JpcHRpb246bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMzBweDtcbiAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblxuICAgIC5kYXNoYm94XG4gICAgLmljb25cbiAgICAuY2FyZC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICB9XG5cbiAgICAuZGFzaGJvYXJkLWNhcmRcbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgICAgIC55ZWFyLXNlbGVjdG9yIHtcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXNoYm9hcmQtY2FyZFxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcblxuICAgICAgICBoNiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTlweDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhc2gtaXRlbSB7XG4gICAgICAgIGZsZXg6IDNweDtcbiAgICAgICAgcGFkZGluZzogMCAxNXB4IDAgMTVweDtcbiAgICB9XG5cbiAgICAuZGFzaC1pdGVtOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgcGFkZGluZzogMCAxNXB4IDAgMTVweDtcbiAgICAgICAgZmxleDogMTAwJVxuICAgIH1cbiAgICAuZGFzaC1pdGVtOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgMTVweCAwIDE1cHg7XG4gICAgICAgIGZsZXg6IDEwMCVcbiAgICB9XG5cbiAgICAuZ3JhcGgtYm9keSB7XG5cbiAgICAgICAgLnN0YXRzIHtcblxuICAgICAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRvdGFsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICAgICAgZmxleDogMTAwJTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0VCRjFGQTtcblxuICAgICAgICAgICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlLXJvd1xuICAgIC5tb2ItdGFibGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAyNXB4ICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vL0ZpbmFuYWNlXG4uY2FyZC53aXRoLXRhYnMgLnRhYnMtY29tcG9uZW50IHtcblxuICAgIC50YWJzLWNvbXBvbmVudC10YWJzIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMS4yNXJlbTtcbiAgICAgICAgdG9wOiAxNHB4O1xuICAgIH1cblxuICAgIC50YWJzLWNvbXBvbmVudC1wYW5lbHMge1xuICAgICAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICB9XG59XG5AbWVkaWEobWF4LXdpZHRoOiAkc21hbGwtYnJlYWtwb2ludCkge1xuICAgIC5jYXJkLndpdGgtdGFicyAudGFicy1jb21wb25lbnQge1xuXG4gICAgICAgIC50YWJzLWNvbXBvbmVudC10YWJzIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtNDFweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICB0b3A6IC0yMXB4O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgICAgIH1cblxuICAgICAgICAudGFicy1jb21wb25lbnQtcGFuZWxzIHtcbiAgICAgICAgICAgIC8vIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC50YWJzLWNvbXBvbmVudC10YWI6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRscy1jb2xvci1ncmF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhc2hib2FyZC10YWJsZVxuICAgIC50YWJsZS1jb21wb25lbnQge1xuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi8vIExvZ2luIC0gQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4ubG9naW4tcGFnZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuXG4gICAgLmxvZ2luLXdyYXBwZXIge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5sb2dpbi1ib3gge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiA0MDBweDtcblxuICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgIC8vIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuaW5wdXQtbGFiZWwge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgIGNvbG9yOiAjNTU1NDdBXG4gICAgICAgIH1cblxuICAgICAgICAub3RoZXItYWN0aW9ucyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYWdlLWNvcHlyaWdodCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogZGFya2VuKCRscy1jb2xvci1wcmltYXJ5LCA1JSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLWxvZ2luIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGxzLWNvbG9yLXByaW1hcnksIDUlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5sb2dpbi1ib3ggLmMtaW5wdXQge1xuICAgICAgICBjb2xvcjogI2ZmZjtcblxuICAgICAgICAuYy1pbmRpY2F0b3Ige1xuICAgICAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubG9naW4td3JhcHBlciAuYy1pbnB1dCB7XG4gICAgICAgID4gaW5wdXQge1xuICAgICAgICAgICAgJjpjaGVja2VkIH4gLmMtaW5kaWNhdG9yIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6Zm9jdXMgfiAuYy1pbmRpY2F0b3Ige1xuICAgICAgICAgICAgICAgIC8vIHRoZSBtaXhpbiBpcyBub3QgdXNlZCBoZXJlIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBmZWVkYmFja1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMDc1cmVtICNmZmYsIDAgMCAwIDAuMnJlbSBkYXJrZW4oIzMzMywgNSUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmFjdGl2ZSB+IC5jLWluZGljYXRvciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCMzMzMsIDUlKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmxvZ28tbWFpbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEyN3B4O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3RoZXItb3B0aW9ucyB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZmZmO1xuICAgICAgICBwYWRkaW5nOiAxcmVtIDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAycmVtO1xuXG4gICAgICAgIGg2IHtcbiAgICAgICAgICAgIGNvbG9yOiAjYzdjYmQxO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGEsXG4gICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICAgICAgLmJ0bi10aGVtZSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRzbWFsbC1icmVha3BvaW50KSB7XG4gICAgICAgIC5vdGhlci1hY3Rpb25zIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sb2dvLW1haW4ge1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNvY2lhbC1saW5rcyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDQwcHg7XG5cbiAgICAgICAgLmxpbmstdGV4dCB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE3cHg7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXlcbiAgICAgICAgfVxuXG4gICAgICAgIC5zb2NpYWwtbG9nbyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAyNXB4O1xuXG4gICAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIExvZ2luIC0gU3R5bGUgM1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4ubG9naW4tcGFnZS5sb2dpbi0zIHtcblxuICAgIC5zaXRlLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC5sb2dpbi1ib3gge1xuICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgICAgZmxleDogMjtcbiAgICAgICAgcGFkZGluZzogMTUwcHggNjBweCAxODBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgICAgIG1pbi13aWR0aDogNDUwcHg7XG5cbiAgICAgICAgLmJveC13cmFwcGVyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtYm94IHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1hZ2VzL2xvZ2luLXZlY3RvcjEuc3ZnJyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZmxleDogNTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBmb250LXNpemU6IDUwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodDtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtYm90dG9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1hZ2VzL2xvZ2luLXZlY3RvcjMuc3ZnJyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwcHg7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgcmlnaHQ6IDMyJTtcbiAgICB9XG5cbiAgICAuY29udGVudC1ib3g6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9mcmFtZS5zdmcnKTtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGhlaWdodDogMzAwcHg7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgd2lkdGg6IDQyMHB4O1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgIC5jb250ZW50LWJveDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvbG9naW4tdmVjdG9yMi5zdmcnKTtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDcuNSU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG5cbiAgICAuYy1pbnB1dCB7XG4gICAgICAgIGNvbG9yOiAjNTU1O1xuICAgIH1cblxuICAgIC5sb2dpbi1ib3ggYSB7XG4gICAgICAgIGNvbG9yOiAjODE3QUUzO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3IgOiBsaWdodGVuKCMzMzMsIDEwJSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3RoZXItb3B0aW9ucyBoNiB7XG4gICAgICAgIGNvbG9yOiAjNTU1O1xuICAgIH1cblxuICAgIC5wYWdlLWNvcHlyaWdodCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNTBweDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE3cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgLnBhZ2UtY29weXJpZ2h0IGEge1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvciA6IGRhcmtlbigkbHMtY29sb3ItcHJpbWFyeSwgMTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5sb2dvLW1haW4gaW1ne1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRsYXJnZS1icmVha3BvaW50KSB7XG5cbiAgICAgICAgLmNvbnRlbnQtYm94IGgxIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudC1ib3ggcCB7XG5cbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudC1ib3g6OmJlZm9yZSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDI1MHB4O1xuICAgICAgICAgICAgd2lkdGg6IDM1MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQtYm94OjphZnRlciB7XG4gICAgICAgICAgICByaWdodDogMTMlO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1lZGl1bS1icmVha3BvaW50KSB7XG5cbiAgICAgICAgLmNvbnRlbnQtYm94IGgxIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQtYm94IHAge1xuICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQtYm90dG9tIHtcbiAgICAgICAgICAgIHdpZHRoOiA2MDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQtYm94OjpiZWZvcmUge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDtcbiAgICAgICAgICAgIHdpZHRoOiAyNTBweDtcbiAgICAgICAgfVxuXG5cbiAgICB9XG5cbiAgICBAbWVkaWEobWF4LXdpZHRoOiAkc21hbGwtYnJlYWtwb2ludCkge1xuXG4gICAgICAgIC5wYWdlLWNvcHlyaWdodCB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTEwcHhcbiAgICAgICAgfVxuXG4gICAgICAgIC5sb2dpbi1ib3gge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAzMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQtYm94IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiXG4ucGFnZS1lcnJvci00MDQge1xuXG4gICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLXNlY29uZGFyeTtcblxuICAgIC5lcnJvci1ib3gge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQ1cHg7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC02MCUpO1xuICAgICAgICB3aWR0aDogODAwcHg7XG4gICAgfVxuXG4gICAgaDEge1xuICAgICAgICBmb250LXNpemU6IDEwcmVtO1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgfVxuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgfVxuXG59XG5cbi5iZy15ZWxsb3cge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgIGNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkbHMtY29sb3ItcHJpbWFyeSwgNSUpO1xuICAgIH1cbn1cbiIsIi5jdXN0b21pemF0aW9uIHtcblxuICAgIC5wcmVmaXgtaW5wdXQge1xuICAgICAgICBtYXgtd2lkdGg6IDMwJTtcbiAgICB9XG5cbiAgICAuZm9ybS1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogOHB4IDE1cHg7XG4gICAgfVxuXG4gICAgLmludm9pY2UtY3VzdG9taXphdGlvbi1jYXJkIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0VCRjFGQTtib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgLmFkZHJlc3MtY3VzdG9taXphdGlvbi1jYXJkIHtcblxuICAgICAgICAgICAgLmFkZHJlc3MtZmllbGRzLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgICAgICAuZmllbGRzLWxpc3Qge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC50YWJzIHtcblxuICAgICAgICAgICAgLnRhYiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLy8gU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLnNldHRpbmdzLWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IDQwcHg7XG5cbiAgLnNldHRpbmdzLXNpZGViYXIge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwcHg7XG5cbiAgICAuc2V0dGluZ3MtbWVudS1pdGVtIHtcbiAgICAgIHBhZGRpbmc6IDEwcHggMHB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcblxuICAgICAgLnNldHRpbmctaWNvbiB7XG4gICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubGluay1jb2xvciB7XG4gICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYWN0aXZlLXNldHRpbmcge1xuICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5ICFpbXBvcnRhbnQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIC5zZXR0aW5nLWljb24ge1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc2V0dGluZy1tYWluLWNvbnRhaW5lciB7XG4gICAgLnNldHRpbmctY2FyZCB7XG4gICAgICBwYWRkaW5nOiAzMHB4O1xuICAgICAgbWluLWhlaWdodDogNjIwcHg7XG4gICAgfVxuXG4gICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgIG1hcmdpbjogMHB4O1xuXG4gICAgICAucGFnZS10aXRsZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTcuNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMXB4O1xuICAgICAgICBjb2xvcjogIzAwMDAwMDtcbiAgICAgIH1cblxuICAgICAgLnBhZ2Utc3ViLXRpdGxlIHtcbiAgICAgICAgbWF4LXdpZHRoOiA0ODBweDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pbnB1dC1sYWJlbCB7XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgICBjb2xvcjogIzU1NTQ3YTtcbiAgICB9XG4gIH1cblxuICAuZXhwZW5zZS1jYXRlZ29yeSB7XG4gICAgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAudGF4LXRhYmxlIHtcbiAgICB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC50YXgtbmFtZSB7XG4gICAgfVxuXG4gICAgLmNvbXBvdW5kLXRheCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDE1cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkcmVkLS12ZXJ5LWxpZ2h0O1xuICAgICAgY29sb3I6ICRyZWQtLWRhcms7XG4gICAgfVxuICB9XG5cbiAgLnBheW1lbnQtdGFiIHtcbiAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG4gIH1cblxuICAuaXRlbS10YWIge1xuICAgIC5kcm9wZG93bi1jb250YWluZXIge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC51cGRhdGUtY29udGFpbmVyIHtcbiAgICAudmVyaWZpZWQsXG4gICAgLm5vdC12ZXJpZmllZCB7XG4gICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICB3aWR0aDogMTVweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC1zdWNjZXNzO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luOiAwIDEwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgfVxuXG4gICAgLm5vdC12ZXJpZmllZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQtZGFuZ2VyO1xuICAgIH1cblxuICAgIC51cGRhdGUtc3Bpbm5lciB7XG4gICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgfVxuXG4gICAgLnVwZGF0ZS1zdGVwcy1jb250YWluZXIge1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nOiAwcHg7XG5cbiAgICAgIC51cGRhdGUtc3RlcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMHB4IHNvbGlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnVwZGF0ZS1zdGVwLXRleHQge1xuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG4gICAgICBtYXJnaW46IDBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIH1cblxuICAgIC51cGRhdGUtc3RhdHVzLWNvbnRhaW5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgIC51cGRhdGUtdGltZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICB9XG5cbiAgICAgIC51cGRhdGUtc3RhdHVzIHtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICB3aWR0aDogODhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1wZW5kaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjFmYjtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1zZWNvbmRhcnk7XG4gICAgICB9XG5cbiAgICAgIC5zdGF0dXMtcnVubmluZyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjEsIDE3OCwgMjM2LCAwLjE1KTtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1saWdodC1ibHVlO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLWZpbmlzaGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZjZlZTtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmVlbjtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1lcnJvciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjUxLCAxMTMsIDEyMCwgMC4yMik7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5hZGQtbmV3LXRheCB7XG4gICAgaGVpZ2h0OiA0NXB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgei1pbmRleDogMTtcbiAgfVxuXG4gIC5mbGV4LWJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5sZWZ0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwcHg7XG4gIH1cblxuICAuYnRuLXN3aXRjaCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTE4cHg7XG4gIH1cblxuICAuYm94LXRpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgY29sb3I6ICM1NTU0N2E7XG4gIH1cblxuICAuYm94LWRlc2Mge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgfVxuXG4gIC5ub3RlcyB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aWR0aDogMjAwcHg7XG5cbiAgICAubm90ZSB7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC52ZXJzaW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjZWFmMWZiO1xuICAgIGNvbG9yOiAjYTVhY2MxO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWYxZmI7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50KSB7XG4gIC5zZXR0aW5ncy1jb250YWluZXIge1xuICAgIC5zZXR0aW5nLW1haW4tY29udGFpbmVyIHtcbiAgICAgIC5zZXR0aW5nLWNhcmQge1xuICAgICAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgICAgfVxuXG4gICAgICAmIC5tbC0xNSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgfVxuXG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlLWNvbXBvbmVudCB7XG4gICAgICB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWluLWhlaWdodDogMTBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudGF4LXRhYmxlIHtcbiAgICAgIC50YXgtbmFtZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIxcHg7XG4gICAgICAgIHdpZHRoOiA3NiU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmV4cGVuc2UtY2F0ZWdvcnkge1xuICAgICAgLnRhYmxlLWNvbXBvbmVudF9fdGFibGVfX2JvZHkge1xuICAgICAgICB0cjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgdGQ6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIHdpZHRoOiAxMDElO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5hZGQtbmV3LXRheCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSW52b2ljZXMgLSBDcmVhdGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmludm9pY2UtY3JlYXRlLXBhZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbjogMCAwIDQwcHggMDtcblxuICAgICAgICAucGFnZS10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0LjVweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDE1cHggMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5icmVhZGNydW1iIHtcblxuICAgICAgICAgICAgLmJyZWFkY3J1bWItaXRlbSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnBhZ2UtYWN0aW9ucyB7XG5cbiAgICAgICAgICAgIC5idG4tY3JhdGVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAwIDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5pbnZvaWNlLWlucHV0IHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgIH1cblxuICAgIC5zaG93LWN1c3RvbWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgMTBweDtcbiAgICAgICAgbWluLWhlaWdodDogMTcwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgMCAwO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAuYWRkcmVzcy1tZW51IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAudGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmN1c3RvbWVyLWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgICAgLmVtYWlsIHtcbiAgICAgICAgICAgIGZsZXg6IDg7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgbWFyZ2luOiAwIDlweCAwIDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRkLWN1c3RvbWVyIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgMDtcblxuICAgICAgICAuYWRkLWN1c3RvbWVyLWFjdGlvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgbWluLWhlaWdodDogMTcwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA2NHB4IDA7XG5cbiAgICAgICAgICAgIC5jdXN0b21lci1pY29uIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMXB4IDE0cHggMTFweCAxM3B4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMTVweCAwIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE3LjVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDdweCAwIDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jdXN0b21lci1yZXF1aXJlZCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1yZWQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG5cbiAgICAub2Zmc2V0LW1kLTEge1xuICAgICAgICBtYXJnaW4tbGVmdDogNSU7XG4gICAgfVxuXG4gICAgLmludm9pY2UtaW5wdXQtZ3JvdXAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG5cbiAgICAgICAgLmludm9pY2UtaW5wdXQge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBQb3BwaW5zO1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrLS1saWdodDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaXRlbS10YWJsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgLml0ZW0tdGFibGUtaGVhZGVyIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuXG4gICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzU1NTQ3QTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgLml0ZW0taGVhZGluZyB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1MHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYW1vdW50LWhlYWRpbmcge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDUwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGg6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5pdGVtLWJvZHkge1xuXG4gICAgICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRkOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLml0ZW0tcm93IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweCAwcHggNXB4IDVweDtcblxuICAgICAgICAgICAgICAgIHRkIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgID4gdGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pdGVtLXNlbGVjdCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAyNTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zZWFyY2gtc2VsZWN0IC5zZWxlY3Rvci1tZW51IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA0NXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLm1haW4ge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLml0ZW0tYW1vdW50IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaXRlbS1zZWxlY3Qtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaXRlbS1zZWxlY3RvciB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkLWl0ZW0ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmRlc2VsZWN0LWljb24ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zb3J0LWljb24td3JhcHBlcixcbiAgICAgICAgICAgICAgICAucmVtb3ZlLWljb24td3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMTVweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zb3J0LWljb24td3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogbW92ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAucmVtb3ZlLWljb24ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YXgtcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG4gICAgICAgIC50YXgtYW1vdW50IHtcbiAgICAgICAgICAgIGZsZXg6IDM7XG4gICAgICAgIH1cblxuICAgICAgICAudGF4LXNlbGVjdCB7XG4gICAgICAgICAgICBmbGV4OiA0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRheC10ciB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMjFweDtcbiAgICB9XG5cbiAgICAubXVsdGktc2VsZWN0LWl0ZW0ge1xuICAgICAgICAubXVsdGlzZWxlY3QsXG4gICAgICAgIC5tdWx0aXNlbGVjdF9faW5wdXQsXG4gICAgICAgIC5tdWx0aXNlbGVjdF9fc2luZ2xlIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cblxuICAgICAgICAubXVsdGlzZWxlY3Q6Zm9jdXMge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tdWx0aXNlbGVjdF9faW5wdXQsXG4gICAgICAgIC5tdWx0aXNlbGVjdF9fc2luZ2xlIHtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjM0LCAyNDEsIDI1MSk7XG4gICAgICAgIH1cblxuICAgICAgICAgLm11bHRpc2VsZWN0X190YWdzIHtcbiAgICAgICAgICAgIC8vIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAgMDtcbiAgICAgICAgICAgIGJvcmRlcjogMHB4IDtcbiAgICAgICAgfVxuICAgICAgICAgIC5tdWx0aXNlbGVjdF9fc2VsZWN0IHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDM4cHg7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm11bHRpc2VsZWN0X19jb250ZW50LXdyYXBwZXIge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctbWQ7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHggMHB4IDVweCA1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAubXVsdGlzZWxlY3RfX2NvbnRlbnQge1xuICAgICAgICAgIG1heC1oZWlnaHQ6IDI0MHB4O1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFkZC1pdGVtLWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0O1xuICAgICAgICBwYWRkaW5nOiAxM3B4IDIzcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgfVxuICAgICAgICAuaWNvbi1mYSB7XG4gICAgICAgICAgICBtYXJnaW46IDJweCAxMXB4IDAgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnZvaWNlLWZvb3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIG1hcmdpbjogMzVweCAwO1xuXG4gICAgICAgIC5idG4tdGVtcGxhdGUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pY29uLWJ1dHRvbiB7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgIH1cblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDA7XG4gICAgICAgIH1cblxuICAgICAgICAuaW52b2ljZS1ub3RlcyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIG1hcmdpbjogNXB4IDAgMCAwO1xuXG4gICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAgMCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmludm9pY2UtdG90YWwge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzOTBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMjBweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICAgICAgICAgJj4gbGFiZWwge1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWN0aW9uIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDdweCAwO1xuXG4gICAgICAgICAgICAgICAgLmludm9pY2UtbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjokbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaW52b2ljZS1hbW91bnQge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNTU1NDdBO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAudG90YWwge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5kaXNjb3VudC1kcm9wLWRvd24ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTA1cHg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLml0ZW0tZHJvcGRvd24ge1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYm9yZGVyLXRvcCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiA3cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRheC1zZWxlY3RvciB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tcm93IHtcblxuICAgICAgICAuaXRlbS1uYW1lIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDJweDtcbiAgICAgICAgICAgIC8vIHBhZGRpbmctbGVmdDogMTBweDtcblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuXG4gICAgICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICAgICAgcmVzaXplOiBub25lO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTFweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLXZlcnktZGFyaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb24ge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3RpdmF0b3Ige1xuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaXRlbS1kcm9wZG93biB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodCAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDBweCA1cHggNXB4IDBweCAhaW1wb3J0YW50O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tZGlzY291bnQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHggMHB4IDBweCA1cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAvLyBib3JkZXItcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50KSB7XG5cbiAgICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEzcHg7XG5cbiAgICAgICAgICAgIC5pbnZvaWNlLWFjdGlvbi1idG4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAuaW52b2ljZS1jdXN0b21lci1jb250YWluZXIge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbGxhcHNlLWlucHV0IHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYWdlLWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmludm9pY2UtaW5wdXQtZ3JvdXAge1xuXG4gICAgICAgICAgICAuaW52b2ljZS1pbnB1dCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAuaW52b2ljZS1mb290IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICAuYnRuLXRlbXBsYXRlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaW52b2ljZS10b3RhbCB7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAzODRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLy8gSW52b2ljZXMgLSBWaWV3XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi5pbnZvaWNlLXZpZXctcGFnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiA1NzBweCAhaW1wb3J0YW50O1xuXG4gICAgLmludm9pY2Utc2lkZWJhciB7XG4gICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBsZWZ0OiAyNDBweDtcbiAgICAgICAgcGFkZGluZzogNjBweCAwIDEwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgIHotaW5kZXg6IDI1O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgIH1cblxuICAgIC5pbnYtc2VhcmNoIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2lkZS1pbnZvaWNlIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMTg1LCAxOTMsIDIwOSwgMC40MSk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDk4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZSB7XG4gICAgICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxlZnQge1xuXG4gICAgICAgICAgICAuaW52LW5hbWUge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmludi1udW1iZXIge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaW52LXN0YXR1cyB7XG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0IHtcblxuICAgICAgICAgICAgLmludi1hbW91bnQge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrLS1saWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmludi1kYXRlIHtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5uby1yZXN1bHQge1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIH1cblxuICAgIC5zaWRlLWhlYWRlciB7XG5cbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAzMHB4IDE1cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE4NSwgMTkzLCAyMDksIDAuNDEpO1xuXG4gICAgICAgIC5pbnYtYnV0dG9uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLnNpZGUtY29udGVudCB7XG4gICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIC5pbnZvaWNlLXZpZXctcGFnZS1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDc1dmg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICB9XG5cbiAgICAuZnJhbWUtc3R5bGUge1xuICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgICB9XG5cbiAgICAuaW52LWZpbHRlci1maWVsZHMtYnRuLCAuaW52LWZpbHRlci1zb3J0aW5nLWJ0biB7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAuZmlsdGVyLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuXG4gICAgICAgIC5maWx0ZXItdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxODUsIDE5MywgMjA5LCAwLjQxKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZmlsdGVyLWl0ZW1zIHtcbiAgICAgICAgICAgIC8vIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDlweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgLmludi1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYXNlLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTU1cHg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5maWx0ZXItaW52b2ljZS1kYXRlIHtcblxuICAgICAgICAudmRwLWRhdGVwaWNrZXIge1xuXG4gICAgICAgICAgICBkaXYge1xuXG4gICAgICAgICAgICAgICAgLnZkcC1kYXRlcGlja2VyX19jbGVhci1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTIxcHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5kYXRlLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleFxuICAgIH1cblxuICAgIC50by10ZXh0IHtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cblxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogJHNtYWxsLWJyZWFrcG9pbnQpIHtcblxuICAgIC5pbnZvaWNlLXZpZXctcGFnZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMzEwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuaW52b2ljZS1zaWRlYmFyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGFsbDtcbiAgICAgICAgbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG59XG5cblxuIiwiLy8gSW52b2ljZXMgLSBJbmRleFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uaW52b2ljZS1pbmRleC1wYWdlIHtcblxuICAgIC50YWJsZS1hY3Rpb25zIHtcblxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAudGFibGUtYWN0aW9ucy1idXR0b24ge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDBweDtcbiAgICAgICAgICAgIHRvcDogLTE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAudGFibGUtc3RhdHMge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDBweDtcbiAgICAgICAgICAgIHRvcDogNDBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5maWx0ZXItY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgIC5maWx0ZXItY3VzdG9tZXIsIC5maWx0ZXItc3RhdHVzIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5maWx0ZXItZGF0ZSB7XG4gICAgICAgIGZsZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgLmZyb20ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgICAgICAudG8ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5maWx0ZXItaW52b2ljZSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxuXG4gICAgLmRhc2hlZCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNCOUMxRDE7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAyOHB4O1xuICAgIH1cblxuICAgIEBtZWRpYShtYXgtd2lkdGg6ICRsYXJnZS1icmVha3BvaW50ICkge1xuICAgICAgICAuZmlsdGVyLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZpbHRlci1pbnZvaWNlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5maWx0ZXItY3VzdG9tZXIsXG4gICAgICAgIC5maWx0ZXItc3RhdHVzLFxuICAgICAgICAuZmlsdGVyLWRhdGUsXG4gICAgICAgIC5maWx0ZXItaW52b2ljZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAgMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhKG1heC13aWR0aDogJHgtc21hbGwtYnJlYWtwb2ludCkge1xuICAgICAgICAucGFnZS1hY3Rpb25zIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCIvLyBFc3RpbWF0ZXMgLSBDcmVhdGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmVzdGltYXRlLWNyZWF0ZS1wYWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW46IDAgMCA0MHB4IDA7XG5cbiAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyNC41cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAxNXB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuYnJlYWRjcnVtYiB7XG5cbiAgICAgICAgICAgIC5icmVhZGNydW1iLWl0ZW0ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wYWdlLWFjdGlvbnMge1xuXG4gICAgICAgICAgICAuYnRuLWNyYXRlciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgMCAxNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVzdGltYXRlLWlucHV0IHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgIH1cblxuICAgIC5zaG93LWN1c3RvbWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgMTBweDtcbiAgICAgICAgbWluLWhlaWdodDogMTcwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgMCAwO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAuYWRkcmVzcy1tZW51IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAudGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleDoxO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY3VzdG9tZXItY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgICAuZW1haWwge1xuICAgICAgICAgICAgZmxleDogODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb24ge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRkLWN1c3RvbWVyIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgMDtcblxuICAgICAgICAuYWRkLWN1c3RvbWVyLWFjdGlvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgbWluLWhlaWdodDogMTcwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA2NHB4IDA7XG5cbiAgICAgICAgICAgIC5jdXN0b21lci1pY29uIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMXB4IDE0cHggMTFweCAxM3B4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMTVweCAwIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE3LjVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDdweCAwIDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jdXN0b21lci1yZXF1aXJlZCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1yZWQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG5cbiAgICAub2Zmc2V0LW1kLTEge1xuICAgICAgICBtYXJnaW4tbGVmdDogNSU7XG4gICAgfVxuXG4gICAgLmVzdGltYXRlLWlucHV0LWdyb3VwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDFweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuXG4gICAgICAgIC5lc3RpbWF0ZS1pbnB1dCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IFBvcHBpbnM7XG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2stLWxpZ2h0O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDEwcHggMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLXRhYmxlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAuaXRlbS10YWJsZS1oZWFkZXIge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG5cbiAgICAgICAgICAgIHRoIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNTU1NDdBO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAuaXRlbS1oZWFkaW5nIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hbW91bnQtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNTBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tYm9keSB7XG5cbiAgICAgICAgICAgIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaXRlbS1yb3cge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA1cHggNXB4O1xuXG4gICAgICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPiB0ZCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLml0ZW0tc2VsZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDI1MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnNlYXJjaC1zZWxlY3QgLnNlbGVjdG9yLW1lbnUge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDQ1cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAubWFpbiB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaXRlbS1hbW91bnQge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pdGVtLXNlbGVjdC13cmFwcGVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pdGVtLXNlbGVjdG9yIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuc2VsZWN0ZWQtaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheS0tbGlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZGVzZWxlY3QtaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnNvcnQtaWNvbi13cmFwcGVyLFxuICAgICAgICAgICAgICAgIC5yZW1vdmUtaWNvbi13cmFwcGVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxNXB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnNvcnQtaWNvbi13cmFwcGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBtb3ZlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5yZW1vdmUtaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3Itc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRheC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG5cbiAgICAgICAgLnRheC1hbW91bnQge1xuICAgICAgICAgICAgZmxleDogMztcbiAgICAgICAgfVxuXG4gICAgICAgIC50YXgtc2VsZWN0IHtcbiAgICAgICAgICAgIGZsZXg6IDQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGF4LXRyIHRkIHtcbiAgICAgICAgcGFkZGluZzogMCAyMXB4O1xuICAgIH1cblxuICAgIC5tdWx0aS1zZWxlY3QtaXRlbSB7XG4gICAgICAgIC5tdWx0aXNlbGVjdCxcbiAgICAgICAgLm11bHRpc2VsZWN0X19pbnB1dCxcbiAgICAgICAgLm11bHRpc2VsZWN0X19zaW5nbGUge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC5tdWx0aXNlbGVjdDpmb2N1cyB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm11bHRpc2VsZWN0X19pbnB1dCxcbiAgICAgICAgLm11bHRpc2VsZWN0X19zaW5nbGUge1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMzQsIDI0MSwgMjUxKTtcbiAgICAgICAgfVxuXG4gICAgICAgICAubXVsdGlzZWxlY3RfX3RhZ3Mge1xuICAgICAgICAgICAgLy8gbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICAgICAgbWluLWhlaWdodDogMzBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6ICAwO1xuICAgICAgICAgICAgYm9yZGVyOiAwcHggO1xuICAgICAgICB9XG4gICAgICAgICAgLm11bHRpc2VsZWN0X19zZWxlY3Qge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMzhweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAubXVsdGlzZWxlY3RfX2NvbnRlbnQtd3JhcHBlciB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogJHNoYWRvdy1tZDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweCAwcHggNXB4IDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tdWx0aXNlbGVjdF9fY29udGVudCB7XG4gICAgICAgICAgbWF4LWhlaWdodDogMjQwcHg7XG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRkLWl0ZW0tYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItcHJpbWFyeS0tbGlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDEzcHggMjNweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC5pY29uLWZhIHtcbiAgICAgICAgICAgIG1hcmdpbjogMnB4IDExcHggMCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVzdGltYXRlLWZvb3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIG1hcmdpbjogMzVweCAwO1xuXG4gICAgICAgIC5idG4tdGVtcGxhdGUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ibGFjaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pY29uLWJ1dHRvbiB7XG4gICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgIH1cblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZXN0aW1hdGUtbm90ZXMge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBtYXJnaW46IDVweCAwIDAgMDtcblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTAwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAwIDAgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5lc3RpbWF0ZS10b3RhbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDM5MHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG4gICAgICAgICAgICAmPiBsYWJlbCB7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlY3Rpb24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgN3B4IDA7XG5cbiAgICAgICAgICAgICAgICAuZXN0aW1hdGUtbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjokbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZXN0aW1hdGUtYW1vdW50IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzU1NTQ3QTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnRvdGFsIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5LS1saWdodDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZGlzY291bnQtZHJvcC1kb3duIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwNXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pdGVtLWRyb3Bkb3duIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYm9yZGVyLXRvcCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiA3cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRheC1zZWxlY3RvciB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXByaW1hcnktLWxpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tcm93IHtcblxuICAgICAgICAuaXRlbS1uYW1lIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDJweDtcblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuXG4gICAgICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogUG9wcGlucztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICAgICAgcmVzaXplOiBub25lO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1kYXJrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGlvbiB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICAgIC5hY3RpdmF0b3Ige1xuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaXRlbS1kcm9wZG93biB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodCAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDBweCA1cHggNXB4IDBweCAhaW1wb3J0YW50O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuaXRlbS1kaXNjb3VudCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweCAwcHggMHB4IDVweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIC8vIGJvcmRlci1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEzcHg7XG5cbiAgICAgICAgICAgIC5pbnZvaWNlLWFjdGlvbi1idG4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAuZXN0aW1hdGUtY3VzdG9tZXItY29udGFpbmVyIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2xsYXBzZS1pbnB1dCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAucGFnZS1hY3Rpb25zIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5lc3RpbWF0ZS1pbnB1dC1ncm91cCB7XG5cbiAgICAgICAgICAgIC5lc3RpbWF0ZS1pbnB1dCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAuZXN0aW1hdGUtZm9vdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgLmJ0bi10ZW1wbGF0ZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmVzdGltYXRlLXRvdGFsIHtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDM4NHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIvLyBFc3RpbWF0ZXMgLSBJbmRleFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uZXN0aW1hdGUtaW5kZXgtcGFnZSB7XG5cbiAgICAudGFibGUtYWN0aW9ucyB7XG5cbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgLnRhYmxlLWFjdGlvbnMtYnV0dG9uIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB0b3A6IC0xNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYmxlLXN0YXRzIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB0b3A6IDQwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmlsdGVyLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG5cbiAgICAuZmlsdGVyLWN1c3RvbWVyIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5maWx0ZXItc3RhdHVzIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5maWx0ZXItZGF0ZSB7XG4gICAgICAgIGZsZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgLmZyb20ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgICAgICAudG8ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5maWx0ZXItZXN0aW1hdGUge1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5kYXNoZWQge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjQjlDMUQxO1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMjhweDtcbiAgICB9XG5cbiAgICBAbWVkaWEobWF4LXdpZHRoOiAkbGFyZ2UtYnJlYWtwb2ludCApIHtcbiAgICAgICAgLmZpbHRlci1jb250YWluZXIge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5maWx0ZXItZXN0aW1hdGUge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZpbHRlci1jdXN0b21lcixcbiAgICAgICAgLmZpbHRlci1zdGF0dXMsXG4gICAgICAgIC5maWx0ZXItZGF0ZSxcbiAgICAgICAgLmZpbHRlci1lc3RpbWF0ZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50KSB7XG4gICAgICAgIC5wYWdlLWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiIsIi8vIEVzdGltYXRlcyAtIFZpZXdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmVzdGltYXRlLXZpZXctcGFnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiA1NzBweCAhaW1wb3J0YW50O1xuXG4gICAgLmVzdGltYXRlLXNpZGViYXIge1xuICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbGVmdDogMjQwcHg7XG4gICAgICAgIHBhZGRpbmc6IDYwcHggMCAxMHB4O1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgd2lkdGg6IDMwMHB4O1xuICAgICAgICB6LWluZGV4OiAzMDtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICB9XG5cbiAgICAuaW52LXNlYXJjaCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNpZGUtZXN0aW1hdGUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxODUsIDE5MywgMjA5LCAwLjQxKTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOThweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYucm91dGVyLWxpbmstZXhhY3QtYWN0aXZlIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGxzLWNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbHMtY29sb3ItZ3JheS0tdmVyeS1saWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAubGVmdCB7XG5cbiAgICAgICAgICAgIC5zdGF0dXMtZXhwaXJlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZFRDdENztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM5QjJDMkM7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zdGF0dXMtYWNjZXB0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNENUVFRDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMzU0OTMwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3RhdHVzLXNlbnQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAyMDgsIDE1NCwgMC40KTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNBOTZFMUE7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zdGF0dXMtdmlld2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjQzlFM0VDO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzFFNTc2QztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnN0YXR1cy1wZW5kaW5nIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkVEN0Q3O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzlCMkMyQztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnN0YXR1cy1yZWplY3RlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0UxRTBFQTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzMTJGNTc7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zdGF0dXMtZHJhZnQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGOEVEQ0I7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNkM0MzJFO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaW52LW5hbWUge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmludi1udW1iZXIge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLXZlcnktZGFyaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5pbnYtc3RhdHVzIHtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMnB4IDEwcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0IHtcblxuICAgICAgICAgICAgLmludi1hbW91bnQge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrLS1saWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmludi1kYXRlIHtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWRhcms7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm8tcmVzdWx0IHtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICB9XG5cbiAgICAuc2lkZS1oZWFkZXIge1xuICAgICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDMwcHggMTVweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMTg1LCAxOTMsIDIwOSwgMC40MSk7XG5cbiAgICAgICAgLmludi1idXR0b24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZWFmMWZiO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zaWRlLWNvbnRlbnQge1xuICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuZXN0aW1hdGUtdmlldy1wYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGhlaWdodDogNzV2aDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgb3ZlcmZsb3c6aGlkZGVuO1xuICAgIH1cblxuICAgIC5mcmFtZS1zdHlsZSB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xuICAgIH1cblxuICAgIC5pbnYtZmlsdGVyLWZpZWxkcy1idG4sXG4gICAgLmludi1maWx0ZXItc29ydGluZy1idG4ge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMDlyZW0gcmdiYSgxMTEsIDExMCwgMTQyLCAwLjUpICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmlsdGVyLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuXG4gICAgICAgIC5maWx0ZXItdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxODUsIDE5MywgMjA5LCAwLjQxKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZmlsdGVyLWl0ZW1zIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggOXB4O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmludi1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYXNlLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTY2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmlsdGVyLWVzdGltYXRlLWRhdGUge1xuICAgICAgICAudmRwLWRhdGVwaWNrZXIge1xuICAgICAgICAgICAgZGl2IHtcbiAgICAgICAgICAgICAgICAudmRwLWRhdGVwaWNrZXJfX2NsZWFyLWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMjFweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGUtZ3JvdXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC50by10ZXh0IHtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6ICRzbWFsbC1icmVha3BvaW50KSB7XG4gICAgLmVzdGltYXRlLXZpZXctcGFnZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMzEwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZXN0aW1hdGUtc2lkZWJhciB7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnMgYWxsO1xuICAgICAgICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvLyBFeHBlbnNlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4uZXhwZW5zZXMge1xuXG4gICAgLmhlYWRlci1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgLy8gZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLmNvbGxhcHNlLWJ1dHRvbi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgIC5jb2xsYXBzZS1idXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5ub3RlcyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdpZHRoOiAyMDBweDtcblxuICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBtZWRpYShtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQgKSB7XG5cbiAgICAuZXhwZW5zZXMge1xuXG4gICAgICAgIC5wYWdlLWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYmxlLWFjdGlvbnMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLWJ1dHRvbi1jb250YWluZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2xsYXBzZS1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi8vIFBheW1lbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtZWRpYShtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQgKSB7XG5cbiAgICAucGF5bWVudHMge1xuXG4gICAgICAgIC5wYWdlLWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYmxlLWFjdGlvbnMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuLnBheW1lbnQtY3JlYXRlIHtcbiAgICAuaGVhZGVyLWJ1dHRvbi1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuY29sbGFwc2UtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgLmNvbGxhcHNlLWJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5AbWVkaWEobWF4LXdpZHRoOiAkeC1zbWFsbC1icmVha3BvaW50ICkge1xuXG4gICAgLnBheW1lbnQtY3JlYXRlLCAucGF5bWVudC1pbmRleCB7XG5cbiAgICAgICAgLnBhZ2UtYWN0aW9ucyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtby10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXItYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbGxhcHNlLWJ1dHRvbi1jb250YWluZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgIH1cblxufSIsIi8vIFdpemFyZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4ud2l6YXJkIHtcblxuICAgIC5sb2dvLW1haW4ge1xuICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgfVxuXG4gICAgLndpemFyZC1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMzBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLnJvdyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI3cHg7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDcwcHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5mb3JtLXRpdGxlIHtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDI0LjVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDI5cHg7XG4gICAgICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgIH1cblxuICAgIC5mb3JtLWRlc2Mge1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheS0tZGFyaztcbiAgICAgICAgd2lkdGg6IDU1JTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICB9XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICB9XG5cbiAgICAuc3RlcC1pbmRpY2F0b3Ige1xuICAgICAgICBwYWRkaW5nLXRvcDogNDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBoZWlnaHQ6IDEyMHB4O1xuICAgIH1cblxuICAgIC5pbmRpY2F0b3ItbGluZSB7XG4gICAgICAgIGJvcmRlcjogNXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogNTIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDYwcHg7XG5cbiAgICAgICAgLmNlbnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IC0xMXB4O1xuICAgICAgICAgICAgd2lkdGg6IDEwNSU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN0ZXBzIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgYm9yZGVyOiA1cHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgcGFkZGluZzogMHB4IDVweDtcbiAgICAgICAgICAgIGhlaWdodDogMjFweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiA1cHggc29saWQgIzU4NTFkODtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIxcHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIxcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY29tcGxldGVkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzU4NTFkODtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDVweCBzb2xpZCAjNTg1MWQ4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIxcHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIxcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICAgICAgLmljb24tY2hlY2sge1xuICAgICAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgLyogbGluZS1oZWlnaHQ6IDIxcHg7ICovXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnVwbG9hZC1sb2dvIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogNjBweDtcblxuICAgICAgICAucHJldmlldy1sb2dvIHtcbiAgICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgYm9yZGVyOiA0cHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmxpc3QtaXRlbXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcblxuICAgICAgICAubGVmdC1pdGVtLFxuICAgICAgICAucmlnaHQtaXRlbSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDEwcHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0LWl0ZW0ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC52ZXJpZmllZCxcbiAgICAubm90LXZlcmlmaWVkIHtcbiAgICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgICB3aWR0aDogMTVweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJyYW5kLXN1Y2Nlc3M7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB9XG5cbiAgICAubm90LXZlcmlmaWVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJyYW5kLWRhbmdlcjtcbiAgICB9XG5cbn1cbiIsIi8vIFJlcG9ydHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLnJlcG9ydHMge1xuXG4gICAgLnJlcG9ydHMtdGFiLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgfVxuXG5cbiAgICAucmVwb3J0cy1mcmFtZS1zdHlsZSB7XG4gICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xuICAgIH1cblxuICAgIC5yZXBvcnQtYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgLnJlcG9ydC12aWV3LWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkYnRuLXNlY29uZGFyeS1jb2xvcjtcbiAgICB9XG5cbiAgICAucmVwb3J0LWZpZWxkcy1jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyNXB4O1xuICAgIH1cblxuICAgIC5yZXBvcnQtZmllbGQtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICB9XG5cbiAgICAucmVwb3J0LXN1Ym1pdC1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMzJweDtcbiAgICB9XG5cbiAgICAucmVwb3J0LWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgY29sb3I6ICRscy1jb2xvci1zZWNvbmRhcnk7XG4gICAgfVxuXG4gICAgLnJlcG9ydC1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiAjNTU1NDdBO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxufVxuXG5cbkBtZWRpYShtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQgKSB7XG5cbiAgICAucmVwb3J0cyB7XG5cbiAgICAgICAgLnJlcG9ydHMtdGFiIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTlweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXBvcnRzLWZyYW1lLXN0eWxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAucmVwb3J0LXN1Ym1pdC1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAucmVwb3J0LXZpZXctYnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBjb2xvcjogJGJ0bi1zZWNvbmRhcnktY29sb3IgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyXG4gICAgICAgIH1cblxuICAgICAgICAucmVwb3J0LWJ1dHRvbiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXBvcnQtZmllbGRzLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAucmVwb3J0LWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYnMge1xuXG4gICAgICAgICAgICAudGFiIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG5cbiAgICAgICAgICAgICAgICAudGFiLWxpbmsge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE3cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiLy8gRGFzaGJvYXJkIC0gQ3JlYXRlICYgSW5kZXhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmN1c3RvbWVyLWNyZWF0ZSB7XG5cbiAgICAuc2VjdGlvbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgZm9udC1zaXplOiAxNy41cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xcHg7XG4gICAgICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLXNlY29uZGFyeTtcbiAgICB9XG5cbiAgICAuY3VzdG9tZXItY2FyZCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRscy1jb2xvci1ncmF5LS1saWdodDtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG5cbiAgICAuc2FtZS1hZGRyZXNzLWNoZWNrYm94LWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICBociB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgIH1cblxuICAgIC5oZWFkZXItYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5jb2xsYXBzZS1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAuY29sbGFwc2UtYnV0dG9uIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQG1lZGlhKG1heC13aWR0aDogJHgtc21hbGwtYnJlYWtwb2ludCApIHtcblxuICAgIC5jdXN0b21lci1pbmRleCB7XG5cbiAgICAgICAgLnBhZ2UtYWN0aW9ucyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtby10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLmN1c3RvbWVyLWNyZWF0ZSB7XG5cbiAgICAgICAgLnBhZ2UtYWN0aW9ucyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtby10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC5zYW1lLWFkZHJlc3MtY2hlY2tib3gtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaHIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS4ycmVtO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlY3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2xsYXBzZS1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlci1idXR0b24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuIiwiLy8gUGF5bWVudHMgLSBWaWV3XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi5wYXltZW50LXZpZXctcGFnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiA1NzBweCAhaW1wb3J0YW50O1xuXG4gICAgLnBheW1lbnQtc2lkZWJhciB7XG4gICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBsZWZ0OiAyNDBweDtcbiAgICAgICAgcGFkZGluZzogNjBweCAwIDEwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgIHotaW5kZXg6IDI1O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgIH1cblxuICAgIC5pbnYtc2VhcmNoIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2lkZS1wYXltZW50IHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE4NSwgMTkzLCAyMDksIDAuNDEpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDk4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZSB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICRscy1jb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxzLWNvbG9yLWdyYXktLXZlcnktbGlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxlZnQge1xuXG4gICAgICAgICAgICAuaW52LW5hbWUge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmludi1udW1iZXIge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXktLWRhcms7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaW52LXN0YXR1cyB7XG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0IHtcblxuICAgICAgICAgICAgLmludi1hbW91bnQge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWJsYWNrLS1saWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmludi1kYXRlIHtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRscy1jb2xvci1ncmF5LS1kYXJrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5uby1yZXN1bHQge1xuICAgICAgICBjb2xvcjogJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIH1cblxuICAgIC5zaWRlLWhlYWRlciB7XG5cbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAzMHB4IDE1cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE4NSwgMTkzLCAyMDksIDAuNDEpO1xuXG4gICAgICAgIC5pbnYtYnV0dG9uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRscy1jb2xvci1ncmF5LS12ZXJ5LWxpZ2h0O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXktLWxpZ2h0O1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItZ3JheTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLnNpZGUtY29udGVudCB7XG4gICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIC5wYXltZW50LXZpZXctcGFnZS1jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDc1dmg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICB9XG5cbiAgICAuZnJhbWUtc3R5bGUge1xuICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGxzLWNvbG9yLWdyYXk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgICB9XG5cbiAgICAuaW52LWZpbHRlci1maWVsZHMtYnRuLCAuaW52LWZpbHRlci1zb3J0aW5nLWJ0biB7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAuZmlsdGVyLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuXG4gICAgICAgIC5maWx0ZXItdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxODUsIDE5MywgMjA5LCAwLjQxKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZmlsdGVyLWl0ZW1zIHtcbiAgICAgICAgICAgIC8vIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDlweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgLmludi1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgIGNvbG9yOiAkbHMtY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYXNlLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcGRvd24tY29udGFpbmVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTY3cHg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5maWx0ZXItcGF5bWVudC1kYXRlIHtcblxuICAgICAgICAudmRwLWRhdGVwaWNrZXIge1xuXG4gICAgICAgICAgICBkaXYge1xuXG4gICAgICAgICAgICAgICAgLnZkcC1kYXRlcGlja2VyX19jbGVhci1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTIxcHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5kYXRlLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleFxuICAgIH1cblxuICAgIC50by10ZXh0IHtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cblxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogJHNtYWxsLWJyZWFrcG9pbnQpIHtcblxuICAgIC5wYXltZW50LXZpZXctcGFnZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMzEwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1zaWRlYmFyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGFsbDtcbiAgICAgICAgbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG59XG5cblxuIiwiLy8gSXRlbXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLml0ZW1zIHtcblxuICAgIC50YWJsZS1sb2FkZXIge1xuICAgICAgICBwYWRkaW5nOiAyNXB4IDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG59XG5cbkBtZWRpYShtYXgtd2lkdGg6ICR4LXNtYWxsLWJyZWFrcG9pbnQgKSB7XG5cbiAgICAuaXRlbXMge1xuXG4gICAgICAgIC5wYWdlLWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYmxlLWFjdGlvbnMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG4uaXRlbS1jcmVhdGUge1xuXG4gICAgLmNvbGxhcHNlLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbn1cblxuQG1lZGlhKG1heC13aWR0aDogJHgtc21hbGwtYnJlYWtwb2ludCApIHtcbiAgICAuaXRlbS1jcmVhdGUge1xuXG4gICAgICAgIC5jb2xsYXBzZS1idXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgIH1cbn1cbiIsIi8vIEludm9pY2Ugc3RhdHVzZXNcblxuLmludi1zdGF0dXMtb3ZlcmR1ZSB7XG4gICAgYmFja2dyb3VuZDogI0ZFRDdENztcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICM5QjJDMkM7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG59XG5cbi5pbnYtc3RhdHVzLXBhaWQge1xuICAgIGJhY2tncm91bmQ6ICNENUVFRDA7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjMzU0OTMwO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4uaW52LXN0YXR1cy11bnBhaWQge1xuICAgIGJhY2tncm91bmQ6ICNGOEVEQ0I7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjNkM0MzJFO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4uaW52LXN0YXR1cy1zZW50IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0NiwgMjA4LCAxNTQsIDAuNCk7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjQTk2RTFBO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4uaW52LXN0YXR1cy12aWV3ZWQge1xuICAgIGJhY2tncm91bmQ6ICNDOUUzRUM7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjMUU1NzZDO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4uaW52LXN0YXR1cy1jb21wbGV0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNENUVFRDA7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjMzU0OTMwO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4uaW52LXN0YXR1cy1wZW5kaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiAjRkVEN0Q3O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogIzlCMkMyQztcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbn1cblxuLmludi1zdGF0dXMtcGFydGlhbGx5X3BhaWQge1xuICAgIGJhY2tncm91bmQ6ICNDOUUzRUM7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjMUU1NzZDO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4uaW52LXN0YXR1cy1kcmFmdCB7XG4gICAgYmFja2dyb3VuZDogI0Y4RURDQjtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICM2QzQzMkU7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG59XG5cblxuLy8gRXN0aW1hdGUgU3RhdHVzZXNcblxuLmVzdC1zdGF0dXMtZXhwaXJlZCB7XG4gICAgYmFja2dyb3VuZDogI0ZFRDdENztcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICM5QjJDMkM7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG59XG5cbi5lc3Qtc3RhdHVzLWFjY2VwdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjRDVFRUQwO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogIzM1NDkzMDtcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbn1cblxuLmVzdC1zdGF0dXMtc2VudCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNDYsIDIwOCwgMTU0LCAwLjQpO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogI0E5NkUxQTtcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbn1cblxuLmVzdC1zdGF0dXMtdmlld2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAjQzlFM0VDO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogIzFFNTc2QztcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbn1cblxuLmVzdC1zdGF0dXMtcGVuZGluZyB7XG4gICAgYmFja2dyb3VuZDogI0ZFRDdENztcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICM5QjJDMkM7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG59XG5cbi5lc3Qtc3RhdHVzLXJlamVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjRTFFMEVBO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogIzMxMkY1NztcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbn1cblxuLmVzdC1zdGF0dXMtZHJhZnQge1xuICAgIGJhY2tncm91bmQ6ICNGOEVEQ0I7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjNkM0MzJFO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xufVxuIl19 */","/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n","// Do not forget to update getting-started/theming.md!\n:root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

`-`

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

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `

`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\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\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\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 outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n","// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover() {\n &:hover { @content; }\n}\n\n@mixin hover-focus() {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus() {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active() {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled();\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled() {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid() {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n","// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n","// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n @each $name, $width in $grid-breakpoints {\n @if ($container-max-width > $width or $breakpoint == $name) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n }\n }\n }\n }\n}\n\n\n// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\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","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\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, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n & > * {\n flex: 0 0 100% / $count;\n max-width: 100% / $count;\n }\n}\n","// 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: 576px, md: 768px, lg: 992px, xl: 1200px)\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: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\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 != null and $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: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\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.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\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 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 $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\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 $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// 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 width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\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\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove 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.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\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(#{$table-striped-order}) {\n background-color: $table-accent-bg;\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 color: $table-hover-color;\n background-color: $table-hover-bg;\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@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover() {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\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 @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\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","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on ` receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: add($input-padding-y, $input-border-width);\n padding-bottom: add($input-padding-y, $input-border-width);\n margin-bottom: 0; // Override the `